版權聲明:本文為博主原創文章,未經允許不得轉載。
引子
在平常的工作中,我經常需要在遠程服務器和本地之間傳輸文件。
以前我都使用scp命令,直到今天因為網絡中斷,scp出現了stalled。
因為上傳的是一個100G的文件,所以如果需要重新傳非常消耗時間。
好在過了一會兒scp自動斷點續傳了,但還是很后怕,因為我不確定scp是否能每次都成功斷點續傳。
所以這時候rsync就非常必要了。
scp和rsync對比:scp節約資源,系統負荷小,但斷點續傳是個問題;rsync速度更快,斷點續傳方便,但系統負荷大,尤其是傳輸很多文件的時候,硬盤I/O非常高。
scp
scp [OPTION] SRC DEST
常用參數:
-r:遞歸拷貝目錄
-q:不顯示進度
-l:限制傳輸帶寬,單位是kbits/s
例如:
scp -r -l 200 /home/user/exampledir user@192.168.XXX.XXX:/home/user/
在輸入命令后,系統會要求輸入user在192.168.XXX.XXX的登錄密碼,密碼正確后就開始復制,scp默認顯示復制進度。
如果我們經常在兩個服務器之間拷貝文件,這時候就需要一個非常有用的技術:scp免密碼拷貝文件。(見另一篇隨筆)
scp免密碼拷貝和ssh免密碼登錄: https://www.cnblogs.com/liuyihua1992/p/9602324.html
rsync
rsync [OPTION] SRC DEST
常用參數:
--progress: 顯示拷貝進度
--partial:保留不完整文件,實現斷點續傳
--partial-dir=DIR:指定不完整文件的存儲目錄,而不是默認存儲到目的地目錄。
-P:包含--progress和--partial
--rsh=ssh:使用ssh方式傳輸文件,注意:如果之前設置過ssh免密碼登錄,那么此時也就不需要密碼了,非常方便
-v:顯示詳細信息
-a:歸檔模式。也就是以遞歸方式傳輸文件,並保持所有文件屬性。
-r:遞歸方式傳輸文件
斷點續傳:
所以,只要我們使用下面的命令傳輸數據,在斷開重連后,再輸入同樣的命令就可以實現斷點續傳了:
rsync -P --rsh=ssh yliu@192.168.200.2:/home/yliu/test.mp4 /root