Rsync
將數百萬個文件從一台伺服器傳輸到另一台伺服器
我有兩台伺服器。其中之一有 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 選項。
請注意我是如何在文件夾末尾使用斜杠的——這很重要。