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

