[Linux] 使用 rsync 傳輸、備份兩處的檔案

Les Lee
一個小小工程師的隨手筆記
3 min readNov 28, 2018

--

誠如耳熟能詳的 cp, scp 等耳熟能詳的 linux 指令。 rsync 也是一個專職同步與備份檔案的 linux 指令。rsync 支援本機或遠端的傳輸與備份,使用上也與 cp, scp並無二致,讓使用者可以很方便的同步兩地的檔案。

與 cp, scp 不同的地方在於:rsync 在同步與備份同時會自動製作一份 snapshot 於之後備份檔案時先檢查新舊檔案之間的差異,並且只傳送有被更動的部分。此動作可加快備份的速度;另外 rsync 也支援資料的自動壓縮與解壓縮以更有效率的方式減少網路頻寬的耗費。

用法

rsync 的基本用法如下

~$ rsync [opt參數] 來源路徑 目標路徑

基本上我們常用的參數有以下幾個

  • -v : [verbose] 顯示詳細訊息
  • -r : [recursice] 遞迴備份所有子目錄下的目錄與檔案
  • -R : [relative] 使用相對路徑
  • -a : [archive] 與使用 -rlptgoD 相同。遞迴備份所有子目錄檔案、連結、擁有者、群組、時間戳、權限…等等。
  • -z : [compress] 壓縮
  • -h : [human-readable] 使輸出的訊息排版較人性化
  • -q : [quiet] 安靜模式,不輸出信息
  • -i : [itemize-changes] 顯示每個檔案的變動係項資訊
  • -I : [ignore-times] 取消自動跳過同檔案大小、同存取時間的檔案
  • — size-only : 要求只檢查檔案大小是否改變,不管存取時間點是否有更動
  • -b : [backup] 目的地端的檔案若先前已存在,再傳輸或刪除前會先被備份
  • — delete : []

以下幾個使用例子

複製本地端的檔案

rsync -avh test.txt ~/Desktop/

building file list ... done
test.txt

sent 2.79K bytes received 42 bytes 5.66K bytes/sec
total size is 2.66K speedup is 0.94

傳輸遠端的檔案

rsync -avh test.txt user@remote.site.com:~/

如此就可以將檔案上傳到遠端的目錄。

當然也可以下載遠端的檔案

rsync -avh user@remote.site.com:~/test2.txt text2.txt

自訂 ssh port

若是遠端的 port 不是預設的 22我們可以使用 -e這個參數來設定要連接的 port 號:ex. 8001

rsync -avh test.txt -e 'ssh -p 8001' user@remote.site.com:~/

總結

以上是我目前所知有關 rsync 的用法。

rsync 其對於大檔案的傳輸有極高的優勢,功能之強大,還有許多進階用法我尚待研究。

--

--

Les Lee
一個小小工程師的隨手筆記

對新事物總是興緻勃勃、嘗試新技術、解決新挑戰; 也時常陷入許多無謂的思索,卡在其中得不出答案。