2018年6月4日 星期一

用rsync過ssh tunnel來備份

要遠端備份一個資料夾,且一段時間後只更新更動過的檔案,可以使用rsync並透過ssh讓資料傳輸個過程中被加密。假設備份是從本地端(local)到遠端(remote)指令如下:
  1. RemoteIP=遠端的IP位址
  2. RemoteUser=遠端的使用者名稱
  3. RemoteDir=/home/remoteUser/Remote/  (遠端放置備份的資料夾)
  4. LocalDir=/home/localUser/Local/ (本地端要備份的資料夾)
  5. rsync -Cavuhtz -e "ssh -p 8964" ${LocalDir} ${RemoteUser}@${RemoteIP}:${RemoteDir}
第五個指令意思是把本地端的資料夾${LocalDir},在遠端透過使用者${RemoteUser}經由IP位址${RemoteIP}登入後,放置到遠端的資料夾${RemoteDir}中。
簡單說就是把/home/localUser/Local備份到/home/remoteUser/Remote,上面第3和第4個指令在指定資料夾的時候,最後面會放入斜線

在第五個指令中,各個參數的意思是:
  • -C:auto-ignore files in the same way CVS does
  • -a:archive mode
  • -v:increase verbosity
  • -u:skip files that are newer on the receiver
  • -h:output numbers in a human-readable format
  • -e "ssh -p 8964":經由ssh加密,從port 8964傳送資料
  • -t:preserve modification times
  • -z:compress file data during the transfer
  • -b:make backups,如果對面有相同檔名的就資料,會把舊的資料做備份。上面的指令5並不希望做備份(這樣會多出很多檔案),所以沒有加這參數
  • --delete:刪除遠端資料夾多出來的檔案。這邊並不希望這麼做所以沒有加入
_EOF_

沒有留言:

張貼留言