rsync 是一個功能強大的文件同步工具,在 Ubuntu(和其他 Linux 系統)中廣泛用於高效複製和同步文件,支持本地和遠程操作。
基本語法
rsync [選項] 源路徑 目標路徑
常用選項詳解
1. 基礎選項
-v, --verbose:顯示詳細輸出-r, --recursive:遞歸複製目錄-a, --archive:歸檔模式(相當於-rlptgoD),保持所有文件屬性-z, --compress:傳輸時壓縮數據-P:相當於--progress --partial(顯示進度+斷點續傳)
2. 同步控制
--delete:刪除目標中源沒有的文件(謹慎使用!)--dry-run:試運行,不實際執行--exclude=PATTERN:排除匹配的文件/目錄--include=PATTERN:包含匹配的文件/目錄--max-size=SIZE:限制同步文件的最大大小--min-size=SIZE:限制同步文件的最小大小
3. 網絡傳輸
-e ssh:通過 SSH 傳輸(默認)--port=PORT:指定 SSH 端口--bwlimit=RATE:限制傳輸帶寬(KB/s)
實用示例
1. 本地同步
# 基本目錄同步(保留屬性)
rsync -av /源目錄/ /目標目錄/
# 帶刪除的同步(使目標與源完全一致)
rsync -av --delete /源目錄/ /目標目錄/
2. 遠程同步
# 推送到遠程服務器
rsync -avzP /本地目錄/ user@遠程IP:/遠程目錄/
# 從遠程拉取
rsync -avzP user@遠程IP:/遠程目錄/ /本地目錄/
# 使用非標準SSH端口
rsync -avzP -e "ssh -p 2222" /本地目錄/ user@host:/目錄/
3. 排除文件
# 排除特定文件/目錄
rsync -av --exclude='*.tmp' --exclude='cache/' 源/ 目標/
# 使用排除列表文件
rsync -av --exclude-from='exclude-list.txt' 源/ 目標/
4. 帶寬限制
# 限制帶寬為 500KB/s
rsync -avz --bwlimit=500 源/ 目標/
重要注意事項
目錄斜槓的區別
# 同步目錄內容
rsync -av /source/ /dest/ # 只同步source內的文件到dest
# 同步目錄本身
rsync -av /source /dest/ # 會創建dest/source目錄
常用組合
# 最常用的組合(備份推薦)
rsync -avzP --delete 源/ 目標/
# 試運行檢查
rsync -avn --delete 源/ 目標/
恢復部分傳輸
# 使用 --partial 保留部分傳輸的文件
rsync -avzP --partial 源/ 目標/
典型應用場景
1.網站備份
rsync -avzP --delete /var/www/ user@backup:/backups/www/
2.增量備份
# 使用硬鏈接實現增量備份(類似 Time Machine)
rsync -av --link-dest=/上次備份 源/ /新備份/
3.大型文件傳輸
# 分塊傳輸,支持斷點續傳
rsync -avzP --partial-dir=.rsync-partial 大文件 目標/
4.實時同步(配合 inotify)
# 使用 inotify-tools 監控變化
inotifywait -mrq --format '%w%f' -e create,modify 目錄 | while read file
do
rsync -avz $file user@remote:/備份目錄/
done
故障排查
- 使用
-vvv獲得更詳細的調試信息 - 檢查權限和所有權問題
- 確保 SSH 免密登錄配置正確(遠程同步時)
- 使用
--stats查看傳輸統計
提示:始終先使用 --dry-run 測試命令,確認無誤後再實際執行!