rsync 命令詳解與示例
一、rsync 命令核心功能與基本語法
1. 核心功能
- 增量同步:僅傳輸源文件與目標文件之間的差異部分,大幅減少數(shù)據傳輸量。
- 跨平臺支持:適用于本地文件系統(tǒng)、遠程 SSH 或 rsync 協(xié)議連接的服務器。
- 元數(shù)據保留:支持保留文件權限、時間戳、符號鏈接、硬鏈接等屬性。
- 靈活過濾:可通過正則表達式、排除/包含規(guī)則篩選同步文件。
- 傳輸優(yōu)化:支持壓縮(
-z)、帶寬限制(--bwlimit)、斷點續(xù)傳(需配合工具)等。
2. 基本語法
# 本地同步語法 rsync [選項] [源路徑] [目標路徑] # 遠程同步語法(通過 SSH 協(xié)議) rsync [選項] [源路徑] [用戶@]遠程主機:[目標路徑] rsync [選項] [用戶@]遠程主機:[源路徑] [目標路徑] # 遠程同步語法(通過 rsync 守護進程協(xié)議) rsync [選項] rsync://遠程主機模塊名/[目標路徑]
核心參數(shù)分類:
- 模式參數(shù):
-a(歸檔模式,等價于-rlptgoD,保留所有元數(shù)據并遞歸同步)-n/--dry-run(模擬同步,不實際傳輸文件,用于測試)-v/-vv(顯示詳細/更詳細的同步過程) - 傳輸控制:
-z(壓縮傳輸數(shù)據,提升網絡傳輸效率)--delete(刪除目標中源不存在的文件,實現(xiàn)鏡像同步)--ignore-errors(忽略文件刪除/讀取錯誤,繼續(xù)同步) - 過濾規(guī)則:
--exclude="模式"(排除符合模式的文件/目錄)--include="模式"(強制包含符合模式的文件/目錄) - 性能優(yōu)化:
--bwlimit=KB/s(限制傳輸帶寬,如--bwlimit=1024)-P(等價于--partial --progress,顯示進度并保留部分傳輸文件)-D(保留設備文件和特殊文件)
二、常用用例與命令示例
1. 本地文件同步
場景:將本地目錄 /data/source 同步到 /data/backup,保留所有屬性并顯示詳細過程。
rsync -av /data/source/ /data/backup/
末尾斜杠 / 表示同步目錄內的內容,目標目錄不存在時會自動創(chuàng)建。
若源路徑不帶斜杠(如 /data/source),目標目錄會創(chuàng)建以 source 為名的子目錄。
2. 遠程同步(通過 SSH)
場景 1:本地文件上傳到遠程服務器
rsync -avz /local/file.txt user@remote.server:/remote/path/
-z 壓縮文件,適合網絡傳輸;遠程路徑需用戶有權限寫入。
場景 2:從遠程服務器下載文件
rsync -avz user@remote.server:/remote/file.txt /local/path/
場景 3:跨服務器同步(無需本地中轉)
rsync -avz -e "ssh -p 2222" user1@server1:/source/ user2@server2:/dest/
-e 指定使用 SSH 協(xié)議及端口(默認 22),支持加密傳輸。
3. 增量備份與鏡像同步
場景 1:增量備份(僅更新變化的文件,刪除目標中多余文件)
rsync -av --delete /source/ /backup/
--delete 會使目標與源嚴格一致,謹慎用于重要數(shù)據!建議先用 --dry-run 模擬。
場景 2:保留歷史版本的增量備份(使用硬鏈接節(jié)省空間)
rsync -av --link-dest=/backup/last/ /source/ /backup/current/
--link-dest 讓新備份共享上一次備份的相同文件,僅存儲差異部分。
4. 排除/包含特定文件
場景:同步目錄時排除日志文件和臨時文件
rsync -av --exclude="*.log" --exclude="tmp/" /data/ /backup/
支持通配符(*、?)和目錄路徑(如 tmp/ 表示排除整個目錄)。
復雜過濾可使用 --exclude-from=文件,在文件中每行寫一個排除模式:
rsync -av --exclude-from=exclude.list /source/ /dest/
5. 性能優(yōu)化與高級選項
限速傳輸(避免影響帶寬):
rsync -avz --bwlimit=2048 /large_data/ remote:/storage/
校驗和模式(跳過時間戳檢查,確保文件內容一致):
rsync -av --checksum /source/ /dest/
保留符號鏈接(默認保留,若需跟隨鏈接同步實際文件,加 --follow-symlinks):
rsync -av --follow-symlinks /source/ /dest/
三、常見問題與解決方案
1. 權限問題:rsync: failed to open dir: Permission denied
原因:源/目標目錄無讀取/寫入權限,或遠程用戶權限不足。
解決:
本地同步:使用 sudo 提升權限,或確保用戶對路徑有對應權限。
遠程同步:檢查遠程用戶是否為目錄所有者,或使用 ssh-keygen 配置無密碼登錄避免權限中斷。
2. 誤刪文件:--delete 意外刪除目標文件
預防:
永遠先用 --dry-run 模擬同步,確認輸出中無錯誤刪除操作:
rsync -av --delete --dry-run /source/ /dest/
重要數(shù)據先備份目標目錄,或使用 --delete-after(先傳輸新文件再刪除,減少風險)。
3. 傳輸中斷:網絡不穩(wěn)定導致同步失敗
解決:
使用 -P(--partial)保留未完成傳輸?shù)呐R時文件,支持斷點續(xù)傳:
rsync -avP /large_file.iso remote:/dest/
若頻繁中斷,可搭配 rsync + nohup 或 screen 保持會話持續(xù)。
4. 文件沖突:源與目標有同名但內容不同的文件
現(xiàn)象:rsync 默認以源文件覆蓋目標文件,可能導致數(shù)據丟失。
解決:
使用 --compare-dest=參考目錄 對比三方文件,優(yōu)先保留最新版本(需 rsync >= 3.1.0):
rsync -av --compare-dest=/reference/ /source/ /dest/
手動檢查沖突文件(通過 --itemize-changes 輸出詳細差異):
bash
rsync -av --itemize-changes /source/ /dest/
5. 符號鏈接異常:同步后鏈接失效或指向錯誤
原因:默認 rsync 保留符號鏈接本身,不跟隨其指向的文件。
解決:
若需保留鏈接(推薦):無需額外參數(shù),默認行為正確。
若需同步鏈接指向的實際文件:添加 --follow-symlinks,但可能導致循環(huán)鏈接錯誤。
6. 元數(shù)據丟失:權限/時間戳未正確保留
原因:未使用歸檔模式 -a,或遠程服務器限制權限寫入。
解決:
始終使用 -a 或顯式添加 -rltp(遞歸、保留符號鏈接、時間戳、權限)。
遠程同步時,確保目標用戶有 chmod/chown 權限(如使用 root 用戶或 sudo)。
7. 壓縮無效:-z 未減少傳輸量
原因:傳輸?shù)奈募咽菈嚎s格式(如 .zip、.tar.gz),壓縮反而增加開銷。
解決:對二進制或文本文件用 -z,對已壓縮文件改用 -z0(最小壓縮)或直接禁用 -z。
8. 網絡連接超時:遠程主機不可達
原因:SSH 端口錯誤、防火墻阻止連接、主機名解析失敗。
解決:
檢查遠程主機 IP/端口(ping remote.server 或 ssh user@remote.server -p 端口)。
添加 -e "ssh -o ConnectTimeout=10" 限制連接超時時間:
rsync -avz -e "ssh -o ConnectTimeout=10" /local/ remote:/dest/
四、最佳實踐總結
測試優(yōu)先:復雜同步任務先用 --dry-run 模擬,確認輸出無誤后再執(zhí)行。
備份關鍵數(shù)據:對重要目錄同步前,手動備份目標數(shù)據(尤其是含 --delete 的操作)。
日志記錄:通過 --log-file=rsync.log 記錄同步過程,方便后續(xù)審計或排錯:
rsync -av --delete --log-file=sync.log /source/ /dest/
版本控制:結合 --link-dest 實現(xiàn)基于硬鏈接的版本化備份,節(jié)省存儲空間。
通過掌握上述用法,可高效利用 rsync 完成本地/遠程文件同步、增量備份、服務器鏡像等任務,同時避免常見陷阱。實際使用中建議根據具體場景調整參數(shù),必要時查閱官方文檔(man rsync)獲取完整選項說明。
- 使用nohup和--remove-source-files在后臺運行rsync并記錄日志方式
- rsync使用--password-file無法讀取密鑰文件,需手動輸入密碼?
- linux上scp能不能取代rsync問題解讀
- Linux中rsync命令使用方式
- 在LINUX系統(tǒng)上使用rsync命令詳解
- rsync如何實現(xiàn)斷點續(xù)傳
- rsync?server服務端配置文件?rsyncd.conf參數(shù)詳解
- rsync同步數(shù)據時提示password file must not be other-accessible的解決方法
- Linux下rsync(本地、遠程)文件同步方式
- Linux利用inotify和rsync服務實現(xiàn)數(shù)據實時同步的原理解析
- 基于rsync寫腳本實現(xiàn)多節(jié)點多服務器文件一鍵同步的方法
- Java之Rsync并發(fā)遷移數(shù)據并校驗詳解
- 如何使用Linux的rsync
- Rsync 秒殺一切備份工具,你能手動屏蔽某些目錄嗎?
- Linux 通過Rsync+Inotify實現(xiàn)本、異地遠程數(shù)據實時同步功能
- python rsync服務器之間文件夾同步腳本
- python+rsync精確同步指定格式文件
- 自動刷新從BrowserSync開始
相關文章
ubuntu20.04安裝unity-tweak-tools啟動時遇到錯誤的解決
在Ubuntu系統(tǒng)中,安裝Unity Tweak Tool時可能會遇到schemacom.canonical.Unity.ApplicationsLens未安裝的錯誤,解決這個問題的辦法是安裝缺失的依賴包,執(zhí)行命令`sudo apt-get install unity-lens-applications` 和 `sudo apt-get install unity-lens-files`2024-09-09

