rsync 高效同步:備份策略與增量傳輸
在 Linux 系統管理與資料備份的領域中,rsync(Remote Sync)無疑是最具威力的工具之一。它不僅能快速複製檔案,更核心在於其「增量傳輸」的機制——僅同步檔案中發生變化的部分,而非整個檔案。對於擁有 TB 級資料的伺服器管理員而言,這意味著頻寬成本的劇降與備份時間的大幅縮短。本文将深入解析 rsync 的核心選項與實戰應用,幫助你建立高效、可靠的備份策略。
核心選項解析
rsync 之所以強大,源於其豐富且靈活的選項組合。以下是幾個在生產環境中最常使用的關鍵選項:
-a(archive):這是「歸檔模式」的縮寫,相當於-rlptgoD的組合。它會保留符號連結、遞迴複製、保留權限、保留時間戳記、保留群組、保留所有者以及保留設備檔案。這是日常備份最基礎的選項。-v(verbose):顯示詳細的處理過程,讓你知道目前正在同步哪些檔案。-z(compress):在傳輸過程中對檔案進行壓縮。這對於透過慢速網路(如寬頻或低頻寬 VPS)進行同步非常有用,能以 CPU 換取頻寬節省。-P(progress + partial):顯示傳輸進度,並保留部分傳輸的檔案。如果傳輸中斷,下次執行時可以從斷點繼續,而不必重新開始。--delete:這是一個危險但強大的選項。它會確保目標目錄與來源目錄完全一致,刪除目標中存在但來源中已不存在的檔案。-e:指定遠端 shell,通常用於搭配 SSH 進行安全傳輸。
實際應用範例
1. 本地目錄同步
假設我們要將 /home/user/documents 備份到 /backup/documents,並希望保留檔案屬性與權限。
rsync -avz --progress /home/user/documents/ /backup/documents/
注意路徑結尾的斜線 /。在 rsync 中,來源路徑是否有斜線意義重大:
- 有斜線
/home/user/documents/:同步目錄內容。 - 無斜線
/home/user/documents:同步目錄本身(即建立/backup/documents/documents/)。
輸出範例如下:
sending incremental file list
./
file1.txt
1,024 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/2)
file2.pdf
5,242,880 100% 2.56MB/s 0:00:02 (xfr#2, to-chk=0/2)
sent 5,244,000 bytes received 64 bytes 1,048,828.00 bytes/sec
total size is 5,242,880 speedup is 1.00
2. 透過 SSH 進行遠端備份
這是 rsync 最常見的用法之一。將本地資料備份到遠端伺服器 192.168.1.100 的 /data/backup 目錄。
rsync -avz -e ssh --progress /home/user/projects/ user@192.168.1.100:/data/backup/
這裡使用 -e ssh 明確指定使用 SSH 協定,確保資料在傳輸過程中加密,防止敏感資訊洩露。
3. 精確鏡像備份(配合 --delete)
若你需要目標目錄成為來源目錄的精確鏡像,必須加上 --delete。請務必謹慎使用,因為這會刪除目標端多餘的檔案。
rsync -avz --delete --progress /home/user/photos/ user@192.168.1.100:/data/photos/
常見問題與注意事項
1. 權限與根目錄同步問題
當同步系統目錄(如 /etc 或 /usr)時,通常需要 root 權限才能讀取所有檔案。若你以一般使用者執行 rsync,可能會看到大量 Permission denied 錯誤。解決方案是使用 sudo 或在遠端端使用 sudo。
# 錯誤示範:一般使用者無法讀取 /etc/shadow
rsync -avz /etc/ user@remote:/backup/etc/
# 正確示範:使用 sudo 確保讀取權限
sudo rsync -avz /etc/ user@remote:/backup/etc/
2. 大檔案傳輸與斷點續傳
對於數 GB 以上的大檔案,網路波動常導致傳輸失敗。rsync 的 -P 選項(或 --partial)能解決此問題。它會保留未完成的部分,下次執行時會比對檔案校驗和,僅傳輸變化部分。
# 第一次傳輸中斷
rsync -avzP large_video.mp4 user@remote:/backup/
# 第二次繼續傳輸,rsync 會自動偵測並只傳差異部分
rsync -avzP large_video.mp4 user@remote:/backup/
小結
rsync 是 Linux 系統管理員的必備利器,其增量傳輸機制與靈活的選項設定,使其成為備份、同步與遷移資料的首選工具。掌握 -a、-z、-P 以及 --delete 等核心選項,並理解路徑斜線與權限的重要性,就能輕鬆應對絕大多數的資料同步需求。建議在正式環境使用前,先於測試環境驗證指令行為,特別是涉及 --delete 時,務必確認來源與目標目錄的正確性,以避免不可逆的資料遺失。