以前做備份都是用 tar 在打包,在本機上移動到其他的磁碟,都沒想過把備份檔透過網路傳輸至其他機器備份等等。
因此這邊來介紹 rsync 這個指令,可以透過 rsh、ssh 將檔案做鏡像備份及增量備份至遠端機器。
rsync 參數
-v:觀察模式,列出更多資訊(檔案名稱等等)。
-q:與 -v 相反,僅列出錯誤訊息。
-r:遞迴複製,用在多層目錄及檔案時。
-u:僅更新檔案,增量備份的作法。若目的地檔案較新,則不更動。要注意可能覆寫舊資料!
-l:保留 symbolic link 的屬性,非檔案內容。
-p:保持原有檔案的屬性(rwx)。
-g:保持原有檔案的擁有群組。
-o:保持原有檔案的擁有者。
-D:保持原有檔案的裝置屬性。
-t:保持原有檔案的時間屬性。
-I:忽略檔案的 mtime,在增量備份比對時會比較快速。
-z:資料傳輸時,加上壓縮。
-e:使用的通道協定。如:-e ssh
-a:相當於 -rlptgoD
rsync 的三種模式
- 本機上備份(複製),其實就相當於cp,只是你可以顯示更多資訊 如:將 np 資料夾底下的所有東西複製至 tmp 資料夾 rsync -av np/ tmp/
- 透過 rsh 或 ssh 協定在 不同機器間傳輸備份 如:將遠端機器的 etc 資料夾備份至此機器的 tmp 資料夾 rsync -av -e ssh user@host:/etc tmp ps. 兩端機器必須都要支援 rsync
- 直接透過 rsync 開啟 server 來傳輸(ubuntu),兩端機器必須都要支援 rsync且需要 root 權限
- vim /etc/init.d/rsync (更改開機開啟 rsync server,會佔用873 port) RSYNC_ENABLE=true
- 新建 /etc/rsyncd.conf (設定檔) 與 /etc/rsyncd.secrets (帳號密碼) 兩個檔案 rsyncd.conf
rsyncd.secrets[backup1] //module name comment = backup dmz web //說明 path = /home/rsync/backup1 //存放備份資料的路徑 auth users = backup1 //認證帳號(設定在rsyncd.secrets的帳號) uid = backup1 //以uid backup1來啟動rsync server(所以 /home/rsync/backup1 的 owner 要設為 backup1) gid = backup1 //以gid backup1來啟動rsync server(所以 /home/rsync/backup1 的 group 要設為 backup1) secrets file = /etc/rsyncd.secrets //密碼檔存放路徑 read only = no
user:password backup1:backup1
- 更改 rsyncd.secrets 權限,重新啟動 rsync server chmod 600 rsyncd.secrets service rsync start
- 透過 sync daemon 備份 rsync -av bckup1:backup1@host::/etc/
參考資料: