Rsync 是一種快速且極其通用的文件復制工具。以其 Delta 傳輸算法,通過僅發送源文件和目標中現有文件之間的差異來減少通過網絡發送的數據量
Rsync 的幾種復制方式:Local,SSH 和 RSH,TCP(rsync://URL)(但不支持在兩個遠程主機之間復制文件)
本地訪問: rsync [OPTION...] SRC... [DEST] 通過遠程 shell 訪問: 拉取 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 推送 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST 通過 rsync daemon 訪問: 拉取 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] 推送 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
安裝
yum install -y rsync
常用參數
-z:傳輸時進行壓縮提高效率 -v:顯示rsync過程中詳細信息。可以使用"-vvvv"獲取更詳細信息 -P:顯示文件傳輸的進度信息 -a --archive:歸檔模式,表示遞歸傳輸並保持文件屬性,等同於"-rtopgDl" -r --recursive:以遞歸模式拷貝目錄 -R --relative:使用相對路徑 -l --links:如果文件是軟鏈接,則拷貝軟鏈接本身而非軟鏈接所指向的文件 -L --copy-links:如果文件是軟鏈接,拷貝軟鏈接指向的文件 -W --whole-file:拷貝文件時不進行增量檢測 -t --times:保持 mtime 屬性 rsync 默認用"quick check"算法決定哪些文件需要增量傳輸。此算法只比較文件的大小和 mtime,即使其它屬性不同也會認為它們是完全相同的文件,從而不需要增量傳輸 建議任何時候都加上"-t",否則目標文件 mtime 會設置為系統時間,導致下次更新檢查出 mtime 不同而導致增量傳輸無效
使用
源路徑如果為目錄,不帶斜線表示目錄本身和目錄中的文件,帶斜線表示目錄中的文件,不包括本身
# 復制遠程計算機 foo 上的 /src/bar/ 目錄中的文件到本地 /data/tmp 目錄中 rsync -avz foo:/src/bar/ /data/tmp # 復制遠程計算機 foo 上的 /src/bar/ 目錄到本地 /data/tmp 目錄中 rsync -avz foo:/src/bar /data/tmp # 以下命令等效 rsync -av /src/foo /dest rsync -av /src/foo/ /dest/foo
文件名(* .c)中的通配符擴展為文件列表由 shell 在運行 rsync 之前處理,而不是由 rsync 本身處理
# 復制當前路徑下所有以 .c 結尾的文件至遠程計算機 foo 的 /src 目錄中
# 對於遠程系統上已存在的文件,會使用 rsync 遠程更新協議,通過僅發送數據中的差異來更新文件
rsync -t *.c foo:/src/