Rsync

將數百萬個文件從一台伺服器傳輸到另一台伺服器

  • September 1, 2018

我有兩台伺服器。其中之一有 1500 萬個文本文件(約 40 GB)。我正在嘗試將它們轉移到另一台伺服器。我考慮壓縮它們並傳輸存檔,但我意識到這不是一個好主意。

所以我使用了以下命令:

scp -r usrname@ip-address:/var/www/html/txt /var/www/html/txt

但我注意到這個命令只傳輸了大約 50,000 個文件,然後連接就失去了。

有沒有更好的解決方案可以讓我傳輸整個文件集合?我的意思是使用諸如rsync傳輸連接失去時未傳輸的文件之類的東西。當發生另一個連接中斷時,我會再次輸入命令傳輸文件,忽略那些已經成功傳輸的文件。

這是不可能的scp,因為它總是從第一個文件開始。

正如你所說,使用rsync

rsync -azP /var/www/html/txt/ username@ip-address:/var/www/html/txt

選項包括:

-a : enables archive mode, which preserves symbolic links and works recursively
-z : compress the data transfer to minimise network usage
-P : to display a progress bar and enables you to resume partial transfers

正如@aim 在他的回答中所說,請確保您/在源目錄上有尾隨(兩者都很好)。

來自手冊頁的更多資訊

只需在 ssh 上使用 rsync!

rsync -av username@ip:/var/www/html/txt /var/www/html/

從手冊頁:

-a , –archive :這相當於 -rlptgoD **。**這是表示您想要遞歸併想要保留幾乎所有內容的一種快速方式( -H 是一個顯著的遺漏)。上述等價的唯一例外是指定 –files-from 時,在這種情況下 -r 不是隱含的。

-v , –verbose:此選項會增加您在傳輸過程中獲得的資訊量。預設情況下,rsync 以靜默方式工作。單個 -v 將為您提供有關正在傳輸的文件的資訊以及最後的簡短摘要。兩個 -v 選項將為您提供有關正在跳過哪些文件的資訊,並在最後提供更多資訊。只有在調試 rsync 時才應該使用兩個以上的 -v 選項。

請注意我是如何在文件夾末尾使用斜杠的——這很重要

引用自:https://unix.stackexchange.com/questions/165858