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