[Linux] 同步備份指令 rsync

關於 rsync 指令,這篇文章整理的很好:10 Practical Examples of Rsync Command in Linux.

rsync 是 Linux 常用來同步備份的指令。
同步備份,就是兩個位置不同的資料夾,可將其中的一個資料夾當作 Source,另一資料夾當作 Destination,並將 Destination 資料夾內,與 Source 內容有差異的部份同步更新到跟 Source 一致,使 Destination 跟 Source 內容一樣:
Figure 1. 同步備份,即將 Destination Files 中與 Source Files 有差異的部份用 Source Files 覆蓋


舉例來說,如果我們將資料夾 A 複製一份成為 B,之後更新 A 內檔案,則透過同步備份,我們可將 A 內有變更的部份跟 B 比對,只更新 B 中與 A 有差異的部份,最終使 A、B 內容一致,此方法比用 A 覆蓋 B 更節省複製檔案的時間。

我常用的 rsync 指令為:
rsync -avzh --delete <path_of_source> <path_of_destination>

--delete 的選項代表刪除 "在 Destination 存在但卻在 Source 不存在的" 檔案。
同時需注意 Source 資料夾的路徑,最後是否有加斜線。
例如 Source 資料夾如果叫作 A,則 <path_of_source> 如果結尾寫 "A/",代表要同步備份 A 資料夾內的全部檔案(之後備份到 Destination 時不會有 A 資料夾出現),若路徑結尾沒有斜線,只寫 "A" ,代表 A 資料夾將被同步(之後會有名為 A 的資料夾出現在 Destination)。

而 Destination 的路徑結尾有無斜線,皆代表同樣意思。例如 Destination 的資料夾名稱若為 B,則 path_of_destination 無論結尾有無斜線,都代表將來被同步的資料夾或檔案會被存放在 B 資料夾內。

如果 rsync 執行結果有錯誤,且輸出訊息太多造成難以查詢錯誤訊息,可再次執行同樣的 rsync 指令並加 -q 選項(q 代表 quiet),如此只會輸出錯誤的訊息,同步成功的訊息就不會顯示:
rsync -aqvzh --delete <path_of_source> <path_of_destination>

處理完畢 Error 訊息,再次執行同一 rsync 指令,直到沒有錯誤訊息為止,即完成同步備份。


留言