rsync是一種遠程和本地文件同步工具,它可以實現(xiàn)遠程和本地文件的增量同步,從而減少傳輸?shù)臄?shù)據量。
同步目錄
rsync -r dir1/ dir2
上面的命令表示把dir1下的所有文件復制到dir2,如果目標目錄不存在將會自動創(chuàng)建。-r表示遞歸,包含該文件夾下的所有目錄和文件。注意,dir1后面的/不能省略,省略之后會在dir2下創(chuàng)建一個dir1文件夾。
更常見的用法是使用-a代替-r,它除了可以遞歸同步,還可以保留符號鏈接、特殊文件和設備文件、修改時間、組、所有者和權限等信息。
rsync -a dir1/ dir2
試運行
在執(zhí)行rsync命令之前,應該始終檢查參數(shù)是否輸錯,rsync提供-n參數(shù)可以試運行命令,-v表示輸出執(zhí)行過程的詳細信息
rsync -anv dir1/ dir2
與遠程同步
本地傳輸?shù)竭h程
rsync -a ~/dir1 username@remote_host:remote_directory
遠程傳輸?shù)奖镜?/p>
rsync -a username@remote_host:~/dir1 local_directory
如果修改了ssh端口,需要加上-e參數(shù)指定新的端口
rsync -a -e 'ssh -p 10021' ~/dir1 username@remote_host:remote_directory
壓縮傳輸
rsync可以對傳輸?shù)膬热葸M行壓縮,從而減少傳輸時間,具體做法是加上-z參數(shù)
rsync -az ~/dir1 username@remote_host:remote_directory
續(xù)傳和進度
-P標志結合了--progress和--partial,可以恢復中斷和顯示傳輸進度
rsync -azP ~/dir1 username@remote_host:remote_directory
完全同步
默認情況下,源目錄刪除了某個目錄,目標目錄不會同步刪除,可以使用--delete參數(shù)來更改這個預設
rsync -a --delete ~/dir1 username@remote_host:remote_directory
排除和包含
--exclude和--include用來指定哪些目錄和文件需要排除或者包含進來
rsync -a --exclude='node_modules' ~/dir1 username@remote_host:remote_directory
上述命令將不同步node_modules文件夾,如果想保留目錄,可更改為node_modules/*
文件備份
rsync支持對源文件進行備份,語法如下
rsync -a --delete --backup --backup-dir=~/backups ~/dir1 username@remote_host:remote_directory