如何在 Linux 中使用 rsync 進(jìn)行高效文件同步和備份
在 Linux 系統(tǒng)管理和云計(jì)算環(huán)境中,文件同步和備份是日常運(yùn)維的關(guān)鍵任務(wù)。rsync 是一個(gè)功能強(qiáng)大、靈活且高效的文件同步工具,它能夠快速同步本地和遠(yuǎn)程文件,僅傳輸變化的部分,極大節(jié)省帶寬和時(shí)間。本文將詳細(xì)介紹 rsync 的基本用法、高級(jí)技巧和實(shí)際應(yīng)用場(chǎng)景,幫助您掌握這一必備工具。
1. rsync 基礎(chǔ)介紹
rsync(remote sync)的核心優(yōu)勢(shì)在于其增量傳輸算法,只傳輸源文件和目標(biāo)文件之間的差異部分,而不是整個(gè)文件。這使得它在同步大文件或大量文件時(shí)特別高效。
基本語(yǔ)法
rsync [選項(xiàng)] 源路徑 目標(biāo)路徑
2. 常用選項(xiàng)和參數(shù)
基本選項(xiàng)
· -v, --verbose:詳細(xì)輸出,顯示同步過(guò)程
· -r, --recursive:遞歸同步目錄
· -a, --archive:歸檔模式,等同于 -rlptgoD(保留權(quán)限、時(shí)間、所有者等)
· -z, --compress:傳輸時(shí)壓縮數(shù)據(jù)
· -h, --human-readable:以人類可讀格式輸出
高級(jí)選項(xiàng)
· --delete:刪除目標(biāo)中存在而源中不存在的文件
· --exclude:排除指定文件或目錄
· --include:包含指定文件或目錄
· --progress:顯示傳輸進(jìn)度
· --dry-run:模擬運(yùn)行,不實(shí)際傳輸
· --partial:保留部分傳輸?shù)奈募阌跀帱c(diǎn)續(xù)傳
· -P:等同于 --progress --partial
3. 本地文件同步示例
同步目錄到另一個(gè)位置
# 基本同步
rsync -av /source/directory/ /destination/directory/
# 同步并顯示進(jìn)度
rsync -avh --progress /home/user/documents/ /backup/documents/
# 同步并刪除目標(biāo)中多余的文件
rsync -av --delete /source/ /destination/
重要提示:源路徑末尾的斜杠 /有不同含義:
· /source/directory/:同步目錄內(nèi)的內(nèi)容
· /source/directory:同步目錄本身及其內(nèi)容
排除特定文件
# 排除指定文件類型
rsync -av --exclude='*.log' /source/ /destination/
# 排除多個(gè)文件類型
rsync -av --exclude='*.tmp' --exclude='*.bak' /source/ /destination/
# 從文件讀取排除列表
rsync -av --exclude-from='/path/to/exclude-list.txt' /source/ /destination/
exclude-list.txt內(nèi)容示例:
*.log
*.tmp
temp/
cache/
4. 遠(yuǎn)程文件同步
rsync 支持通過(guò) SSH 協(xié)議進(jìn)行安全的遠(yuǎn)程同步,這是其最強(qiáng)大的功能之一。
從本地同步到遠(yuǎn)程
# 同步到遠(yuǎn)程服務(wù)器
rsync -avz /local/path/ user@remotehost:/remote/path/
# 使用非標(biāo)準(zhǔn)SSH端口
rsync -avz -e 'ssh -p 2222' /local/path/ user@remotehost:/remote/path/
從遠(yuǎn)程同步到本地
# 從遠(yuǎn)程服務(wù)器同步
rsync -avz user@remotehost:/remote/path/ /local/path/
在遠(yuǎn)程服務(wù)器之間同步
# 通過(guò)本地中轉(zhuǎn)同步兩個(gè)遠(yuǎn)程服務(wù)器
rsync -avz user1@source_host:/source/path/ user2@dest_host:/dest/path/