【Linux】Rsync, 複製備份都好用
https://unihost.com/help/how-to-use-rsync-to-sync-local-and-remote-files-and-directories/
要進行不同台電腦之間的資料交換
Rsync 是大家的選擇之一
以下這篇作為 Rsync 的筆記
安裝
Client端或是Server端都需要安裝 Rsync
yum -y install rsync
或
sudo apt-get install rsync
常見參數
- -v:verbose 模式,輸出詳細訊息
- -r:遞迴備份所有子目錄下的目錄與檔案
- -a:遞迴備份所有子目錄下的目錄與檔案,保留連結檔、檔案的擁有者、群組、權限以及時間戳記
- -z:啟用壓縮
- -h:將數字以比較容易閱讀的格式輸出
- --bwlimit=xxxK:限制網路頻寬
- -e:ssh 連接埠號
rsync -avzh -e 'ssh -p 12345' /mypath/myfile.gz pi@192.168.1.12:/mybackup/
- --progress 顯示傳送進度
- --delete:同步刪除檔案,假如來源端的檔案已不存在,就會把遠端存在的刪除
- --exclude:排除特定檔案,一定要放在include之後
- --include:只備份某些特定檔案
- --min-size:限定檔案大小下限
- --max-size:限定檔案大小上限
- --remove-source-files:備份後刪除來源檔案
- --dry-run:測試 rsync,測試指令,會輸出訊息,但不會備份
- --existing:排除新增的檔案,只更新既有的
實例:
A Machine 透過跳板機(Jumphost) B 將資料備份到 Server C
在 A Machine 產生金鑰,並設定在 B 和 C (如果沒有就用密碼)
建立 ssh 的 config
Host JumpBox
HostName xx.xx.xx.xx
User changd
IdentityFile ~/.ssh/id_rsa
Host DevelopDrive
HostName xx.xx.xx.xx
User changd
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh -q -W %h:%p JumpBox
接著試試看能不能直接 ssh 連線到 B 和 C
ssh JumpBox
ssh DevelopDrive
假如出現 primary key too open 的錯誤導致無法連線
這時要對私鑰更改權限
chmod 600 ~/.ssh/id_rsa
接著重新 ssh 看看 B 和 C
如果都能順利連線
就可以使用 rsync 將檔案從 A 丟到 C 囉
rsync -av git/test/ DevelopDrive:test
未來如果發現更多 Rsync 的用法都會在這篇更新更多資訊