[Linux] 使用 rsync 傳輸、備份兩處的檔案
Published in
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.txtsent 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
其對於大檔案的傳輸有極高的優勢,功能之強大,還有許多進階用法我尚待研究。