前言 :
rsync 是一個遠端檔案的備份、同步程式,用 man 查 “rsync” 得到的名稱: “rsync – faster, flexible replacement for rcp“,實際上使用也確實如此. rsync 目前由 samba 的團隊在發展 (網址: http://rsync.samba.org/),它有它自己的演算法,可以很有效率的傳輸檔案, 支援 rsh 及 ssh 加密傳輸,應該是目前最常被做為資料同步或異地備援的工具.
大部份的 Linux 應該都有安裝 rsync 了,如果沒有,就直接用 apt 或 yum 安裝即可.
名詞解釋 :
不知是否有人會誤解下列的名詞,不過,一開始使用 rsync 我就有點誤解了,所以先說明如下 :
- 備份伺服器:
- Client 端:
啟動備份伺服器 :
1. 在備份伺服器編輯 "/etc/xinetd.d/rsync",找到 :
改為
儲存後,執行 :
備份伺服器的設定檔 :
rsync 服務的設定檔主要有兩個,一個是 “/etc/rsyncd.conf”,一個是自訂的密碼檔. rsyncd.conf 的設定格式如下 :
- #中括號內的文字是自訂的備份代號,設定檔內可以有多個備份代號,每個代號之下可以有自已的設定
- #以下這一行是 log 檔的位置(非必要)
- log file = /var/log/rsync.log
- [web1]
- #備份之檔案的存放路徑 (請先建立好路徑,並且要讓下面的 uid 及 gid 可以寫入檔案)
- path = /var/backup/web1
- #驗證的用戶名稱 (此名稱只需存在於密碼檔裡面即可)
- auth users = john
- #允許用戶的來源
- hosts allow = 192.168.1.0/24 192.168.2.0/24
- #執行程式時所使用的用戶及群組名稱,同時也會成為備份之後檔案的擁有者及擁有群組
- uid = root
- gid = root
- #密碼檔的位置
- secrets file = /etc/rsync.password
- read only = no
新增密碼檔之後,要將權限設為 600,否則啟動 rsync 服務時會有錯誤 :
完成設定檔之後不須要再重新啟動 xinetd.
Client 端 :
Client 端所需要做的僅是執行 “/usr/bin/rsync”,rsync 做為同步處理時,常用的參數如下 :
* -a, –archive: archive mode, equivalent to -rlptgoD
* -v, –verbose: increase verbosity
* -R, –relative: use relative path names
* -H, –hard-links: preserve hard links
* -S, –sparse: handle sparse files efficiently
* -z, –compress: compress file data
* –delete: delete files that don’t exist on sender
* –progress: show progress during transfer
* –password-file: get password from FILE
Client 端的密碼檔也是純文字格式,只要把正確的密碼輸入進去即可,同樣使用明碼,就是備份伺服器所設定的那個密碼。例如我的密碼檔放在 “/etc/myrsync.password”,那檔案的內容就是 :
新增密碼檔之後,同樣要將權限設為 600 :
再來就是進行檔案的傳輸了,rsync 指令的語法如下 :
假設我要將 Client 端的 /var/www/html 下的檔案傳輸到備份伺服器 (備份伺服器的 IP 是 “192.168.1.99″),那我就執行 :
第一次執行時,傳輸檔案的所花費的時間會比較長,第二次執行就只會傳輸有新增或更新過的檔案,時間就會縮短很多.
Ps.
檔案傳輸完成之後,到備份伺服器的 /var/backup/web1 下查看,就會多出一個 html 資料夾,這就是剛剛 rsync 傳輸過去的檔案. 而將以上的指令加到系統的 crontab 就可以定時同步檔案了.
補充說明 :
* [Linux 小學堂] 柏青哥 SuSE Linux : Section 8.1 - crontab 排程
沒有留言:
張貼留言