[linux]rsync

參考網址:gtwang

Linux 使用 rsync 遠端檔案同步與備份工具教學與範例

rsync 基本用法

rsync 的基本語法結構如下:

rsync 參數 來源檔案 目的檔案

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

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

rsync 遠端備份

rsync 也可以用於不同台機器之間的遠端備份,這樣的用法就跟 scp 指令很像,不過 rsync 會更有效率:

rsync -avzh /mypath/myfile.gz pi@192.168.1.12:/mybackup/

這樣就會將本地端的 myfile.gz 備份至 pi@192.168.1.12 的 /mybackup/ 目錄中,在遇到這種遠端備份的狀況時,rsync 預設會以 ssh 的方式登入遠端的機器,所以在執行這行備份指令之後,要接著輸入pi@192.168.1.12 的密碼,接著就會開始備份資料。

自訂 SSH 連接埠

正常 ssh 遠端登入服務的連接埠(port)號碼是 22,但有些人為了保護伺服器避免受到太多的網路攻擊,會將 ssh 的連接埠改成其他的號碼,例如 12345,不過這樣的話在使用 rsync 進行遠端備份資料時,就也要跟著指定連接埠號碼。

假設 192.168.1.12 這台伺服器的 ssh 服務連接埠號碼為 12345,以下是透過 rsync 將資料備份資料的範例:

rsync -avzh -e 'ssh -p 12345' /mypath/myfile.gz pi@192.168.1.12:/mybackup/

這裡我們多加入一個 -e 參數,其用途是指定遠端登入所要使用的指令,預設的指令就是 ssh,而這裡我們將指令變更為 ssh -p 12345,也就是使用 12345 這個連接埠登入 ssh 的意思(請參考 ssh 指令的 -p 參數用法)。

 

備份特定檔案

若要讓 rsync 在備份檔案時,排除所有 *.txt 的文字檔檔案,可以使用 --exclude 參數:

rsync -avh --exclude '*.txt' myfolder/ backup/

我們可以使用多個 --exclude 來排除多種檔案,例如:

rsync -avh --exclude '*.txt' --exclude '*.py' myfolder/ backup/

如果只想要備份某些特定的檔案,可以將 --exclude 與 --include 配合使用,例如只備份所有 *.c 的 C 語言原始碼:

rsync -avh --include '*.c' --include '*/' --exclude '*' myfolder/ backup/

限定備份檔案大小

rsync 也可以依照檔案的大小來選擇備份的檔案,

--min-size 可以指定備份檔案的大小下限,例如只備份 1MB 以上的檔案:

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

而 --max-size 可以指定備份檔案的大小上限,例如只備份 4KB 以下的檔案:

rsync -avh --max-size=4K myfolder/ backup/

--min-size 與 --max-size 也可以同時使用,例如只備份 1KB 到 2MB 之間的檔案:

rsync -avh --min-size=1K --max-size=2M myfolder/ backup/

 

ssh 免密碼登入
用本機pi帳號,登入遠端pi帳號
client端pi身分 生成公鑰
ssh-keygen -t rsa -P '' (注:最後是二個單引號,表示不設定密碼)
然後分發公鑰到目標機器
ssh-copy-id -i ~/.ssh/id_rsa.pub 使用者名稱@對方機器IP (注意不要忘記了引數-i)
到此本機pi就可以免密碼登入遠端pi帳號了。ssh pi@遠端機器IP

但因讀取權限的問題,rsync是用root的身分建立crontab
所以還得將/home/pi/.ssh 的id_rsa 及 id_rsa.pub複製到/root/.ssh

 

本篇發表於 Linux系統, 軟體使用。將永久鏈結加入書籤。