使用 SSH 配合憑證來遠端備份檔案 (rsync)

前面寫了一篇「使用 SSH 配合憑證來遠端複製檔案
簡介使用 scp 配合 ssh 來遠端複製檔案,這樣的方式對於簡單的檔案複製是可行的,但是如果要備份大量檔案/目錄或程式,就顯得有點不太經濟了

這時候,比較好的作法是利用 rsync 配合 ssh 來運作,我們同樣使用 public/private key 的方式來認證,並限制只能作特定動作

要使用 rsync 之前,請把所有機器的 rsync 都裝起來

# cd /usr/ports/net/rsync
# make
# make install

假設我們要把 Host X 上面的目錄 /home/mysql/ 備份到 Host A 下面 /home/backup-x/ 下面,作法請先參考前一篇文章,先設好信任關係


為了方便說明,我們讓 A 去信任 X,讓 X 可以主動把檔案備份到 A 的機器上面

接下來有幾個地方要作一些修改:

1. 遠端機器 (A) authorized_keys 內的 command 要寫成


command="rsync -az --server . /home/backup-x",no-port-forwarding,no-pty ssh-dss AAAAB3NzaC1kc3MAAACBAPWP8FS.... backup@X


2. 本機機器 (X) 的命令應該是:

rsync -az -v -e ‘ssh -i /home/backup/.ssh/id_dsa’ /home/mysql backup@A:


以上這個命令就會把 X 上面的 /home/mysql/… 備份到 A 上面的 /home/backup-x/mysql/… 了…

要注意 rsync 的語法中,來源目錄有沒有結尾的斜線 (/) 是有差異的喔,詳見 rsync 的說明


以上的作法會受限於目標目錄只能一次只能指定一個,有時間再介紹另外一種作法…

歡迎留下您的意見