Master A, Client B, Client C, Client D
Master A 為有版控的開發環境
希望 commit 到 Master A 後
能夠自動同步到三台 Client 機器上
rsync 第一次做完 Full Backup 後
日後備份檔案會是採取差異備份的策略
大幅降低備份檔案的傳輸時間
rsync 有兩種方法在 server / client 進行傳輸
1. 透過 ssh 的通道
2. 使用 rsync 提供的 daemon 服務
採用方法一透過 ssh 的通道來同步檔案
由於希望往後能靠自動排程(crontab)來進行同步
所以需要先製作出免密碼登入的 ssh 金鑰
- 在 Master 端建立 Public Key 與 Private Key
- Private Key 保存於 Master A
- Public Key 傳送給 Client B,C,D
#用 RSA 演算法產生 Key Pair ssh-keygen -t rsa #查看 keys ll ~/.ssh #Private Key 預設位置不用變更 #Public Key to Client B scp id_rsa.pub root@clientB:~/.ssh #Public Key to Client C scp id_rsa.pub root@clientC:~/.ssh #Public Key to Client D scp ip_rsa.pub root@clientD:~/.ssh
將 Public Key 保存至 authorized_keys
完成後,ssh 登入 Client 就免密碼
cd ~/.ssh cat id_rsa.pub >> authorized_keys chmod 644 authorized_keys
#!/bin/bash # Master A 檔案路徑 localdir="/local/path" # Client 端備份路徑 backupdir="/backups" # Client 端 ip 位址 remoteip="192.168.100.252 192.168.100.253 192.168.100.254" for ip in ${remoteip} do rsync -av ${localdir} -e ssh root@${ip}:${backupdir} done
# 建立 crontab 工作,每十五分鐘差異備份一次 crontab -e 0-59/15 * * * * sh backup.sh