rsync 是甚麼? rsync 是 Unix 的一款套用軟體,它能同步更新兩處電腦的檔案與目錄,特點在於快速、彈性,並且可以節省網路帶寬。它的運作方式是比較源和目標檔案,只傳送有差異的部分,因此適合用於大型檔案的備份。這篇教學文章介紹了如何使用 Linux 上的 rsync 工具進行檔案同步、備份,以及自動製作快照式累進備份。rsync 是一個強大的工具,能夠以高效率處理檔案複製和備份,同時支援本地和遠端的操作。




rsync 是甚麼?

遠端同步(Remote Sync)簡稱 rsync ,是一款功能強大且廣泛應用於Unix-like作業系統的套件軟體。它的主要功能在於可以快速而靈活地同步和更新兩處電腦之間的檔案和目錄,這些特點使得它成為檔案備份和同步的首選工具之一。無論是小型的日常同步還是大型的備份任務,rsync都能夠表現出色。接下來,我們將更深入地探討rsync的特點和使用方法。

其中 rsync 以其優越的效能而聞名。它能夠快速地在兩個位置之間傳輸檔案,並且相比於傳統的複製方法,它只會傳輸有變化的部分,從而節省了網路帶寬和時間。這使得它特別適合用於大型檔案的備份,因為它能夠在效率和速度方面表現出色。

rsync 基本語法結構

rsync [options] source destination

以下是最常見的幾個參數:

  • -v:verbose 模式,輸出比較詳細的訊息。
  • -r:遞迴(recursive)備份所有子目錄下的目錄與檔案。
  • -a:封裝備份模式,相當於 -rlptgoD,遞迴備份所有子目錄下的目錄與檔案,保留連結檔、檔案的擁有者、群組、權限以及時間戳記。
  • -z:啟用壓縮。
  • -h:將數字以比較容易閱讀的格式輸出。

1. 基本用法

這將以遞迴方式複製源目錄下的所有檔案和子目錄至目標目錄。

rsync -avh /path/to/source/ /path/to/destination/

2. 遠端備份

rsync 可以透過 SSH 進行遠端備份,確保安全性。

rsync -avh -e ssh user@remote:/path/to/source/ /path/to/local/destination/

3. 檔案排除和選擇性備份

可以使用 --exclude--include 參數來控制備份的內容。

rsync -avh --exclude '*.txt' /path/to/source/ /path/to/destination/

這會排除所有 .txt 檔案的備份。

4. 自動刪除來源檔案

使用 --remove-source-files 參數在成功備份後自動刪除源檔案。

rsync -avh --remove-source-files /path/to/source/ /path/to/destination/

5. 測試參數設定

使用 --dry-run 參數來模擬備份,查看將會發生的動作,但不會真正進行複製。

rsync -avh --dry-run /path/to/source/ /path/to/destination/

6. 定期備份與排程

使用 crontab 在特定時間執行定期備份任務。 範例:

0 5 * * 1 rsync -avh /path/to/source/ /path/to/destination/

這將每週一的早上 5 點執行備份。

7. 同步刪除檔案

rsync 預設僅會將源端現有的檔案同步更新至目的端(同步所有新增或修改的檔案)。但如果源端的檔案被刪除,rsync 不會主動刪除目的端的檔案。這樣可以確保資料不會被意外刪除,同時也保留了備份檔的完整性。

如果想要讓 rsync 也同步刪除不存在於來源端的檔案,可以加上 –delete 參數。當來源端只有新增檔案而沒有刪除檔案時,rsync 就會像一般的複製動作一樣運作。

rsync -avh --delete folder/backup/

8. 自訂 SSH 連接埠

正常情況下,SSH 遠端登入服務的連接埠(port)號碼是 22,為了保護伺服器免受網路攻擊,有些人會將 SSH 連接埠改成其他號碼

假設伺服器的 IP 位址為 192.168.1.12,且 SSH 連接埠已被修改為 8899。以下是透過 rsync 執行遠端備份的範例指令:

rsync -avzh -e 'ssh -p 8899' /path/myfile.gz user@192.168.1.12:/backup/

讓我們來拆解這個指令的每個部分:

  1. rsync: 執行 rsync 工具。
  2. -avzh: 這是一系列的選項,每個選項都有特定的含義:
    • -a: 啟用封裝模式,等同於 -rlptgoD,這會保留檔案的屬性、權限、時間戳等。
    • -v: 啟用詳細輸出模式,顯示比較詳細的訊息。
    • -z: 啟用壓縮,傳輸檔案時進行壓縮以節省頻寬。
    • -h: 以人類可讀的格式顯示數字。
  3. -e 'ssh -p 12345': 這個部分指定了遠端登入所需的指令。在這裡,我們使用 SSH 來進行遠端連接,並透過 -p 12345 指定了 SSH 連接埠號碼為 12345。
  4. /path/myfile.gz: 這是本地檔案的路徑,指定了要進行備份的檔案。
  5. user@192.168.1.12:/backup/: 這是遠端伺服器上的路徑,指定了備份檔案將要存放的位置。user 是遠端伺服器的使用者名稱,192.168.1.12 是遠端伺服器的 IP 位址,/backup/ 是目標路徑。

9. 只更新既有檔案

如果只想更新之前已備份的檔案,而不是新增的檔案,可以使用 –existing 參數。

rsync -avh --existing folder/backup/

10. 限定備份檔案大小

可以使用 –min-size 參數指定備份檔案的大小下限。例如,可以設定只備份 1MB 以上的檔案。

rsync -avh --min-size=1M myfolder/ backup/

延伸閱讀:只需一鍵讓您的工作更有效率!Monica AI 如何脫穎而出超越 ChatGPT、Bard、Copilot、Bing AI?

延伸閱讀:MobaXterm 教學比 Putty 更強大方便好操作的 Windows 免費 SSH Client 軟體





主頁 » LINUX » 實用技巧 » 如何在 Linux 遠端同步與備份 ? 使用 rsync 的教學與 crontab 定期備份與排程範例

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *