上篇博文 《LinuxTools---Rsync---原理及其應用(一) 》中已經瞭解了rsync這個工具的原理以及基於SSH備份源的rsync遠程備份的搭建,下面將介紹有關rsync備份源。
rsync不僅僅用作遠程同步的發起端(客戶端),也可以作爲守護進程運行,爲其他客戶機提供備份源,配置rsync備份源需要建立配置文件rsync.conf,創建備份賬戶,然後將rsync程序以”- -daemon”選項運行。
建立/etc/rsyncd.conf配置文件:
配置文件rsyncd.conf位於/etc/目錄下,需自行建立,配置內容的格式與samba服務器類似,具體可以參考man手冊頁,下面將以源目錄/var/www/html、備份賬號backupuser爲例,介紹其配置方法。
在備份源服務器上創建rsyncd.conf文件。該文件要手工創建。
rsync配置文件介紹:
全局參數:對整個rsync服務器生效,如果模塊參數和全局參數衝突,針對衝突模塊的模塊參數生效
模塊參數:定義需要通過rsync輸出的目錄定義的參數
下面是常見的全局配置參數,
port #→指定後臺程序使用的端口號,默認爲873。 uid #→該選項指定當該模塊傳輸文件時守護進程應該具有的uid,配合gid選項使用可以確定哪些可以訪問怎麼樣的文件權限,默認值是" nobody"。 gid #→該選項指定當該模塊傳輸文件時守護進程應該具有的gid。默認值爲" nobody"。 max connections #→指定該模塊的最大併發連接數量以保護服務器,超過限制的連接請求將被告知隨後再試。默認值是0,也就是沒有限制。 lock file #→指定支持max connections參數的鎖文件,默認值是/var/run/rsyncd.lock。 motd file #→" motd file"參數用來指定一個消息文件,當客戶連接服務器時該文件的內容顯示給客戶,默認是沒有motd文件的。 log file #→" log file"指定rsync的日誌文件,而不將日誌發送給syslog。 pid file #→指定rsync的pid文件,通常指定爲“/var/run/rsyncd.pid”,存放進程ID的文件位置。 hosts allow = #→單個IP地址或網絡地址 //允許訪問的客戶機地址
下面是常見的模塊配置參數
主要是定義服務器哪個目錄要被同步輸出。
其格式必須爲“[共享模塊名]”形式,這個名字就是在rsync客戶端看到的名字,其實有點象Samba服務器提供的共享名。而服務器真正同步的數據是通過path來指定的。
Comment #→給模塊指定一個描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶。默認沒有描述定義。 Path #→指定該模塊的供備份的目錄樹路徑,該參數是必須指定的。 read only #→yes爲只允許下載,no爲可以下載和上傳文件到服務器 exclude #→用來指定多個由空格隔開的多個文件或目錄(相對路徑),將其添加到exclude列表中。這等同於在客戶端命令中使用—exclude或----filter來指定某些文件或目錄不下載或上傳(既不可訪問) exclude from #→指定一個包含exclude模式的定義的文件名,服務器從該文件中讀取exclude列表定義,每個文件或目錄需要佔用一行 include #→用來指定不排除符合要求的文件或目錄。這等同於在客戶端命令中使用--include來指定模式,結合include和exclude可以定義複雜的exclude/include規則。 include from #→指定一個包含include模式的定義的文件名,服務器從該文件中讀取include列表定義。 auth users #→該選項指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這裏的用戶和系統用戶沒有任何關係。如果" auth users"被設置,那麼客戶端發出對該模塊的連接請求以後會被rsync請求challenged進行驗證身份這裏使用的challenge/response認證協議。用戶的名和密碼以明文方式存放在" secrets file"選項指定的文件中。默認情況下無需密碼就可以連接模塊(也就是匿名方式)。 secrets file #→該選項指定一個包含定義用戶名:密碼對的文件。只有在" auth users"被定義時,該文件纔有作用。文件每行包含一個username:passwd對。一般來說密碼最好不要超過8個字符。沒有默認的secures file名,注意:該文件的權限一定要是600,否則客戶端將不能連接服務器。 hosts allow #→指定哪些IP的客戶允許連接該模塊。定義可以是以下形式: 單個IP地址,例如:192.167.0.1,多個IP或網段需要用空格隔開, 整個網段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0 “*”則表示所有,默認是允許所有主機連接。 hosts deny #→指定不允許連接rsync服務器的機器,可以使用hosts allow的定義方式來進行定義。默認是沒有hosts deny定義。 list #→該選項設定當客戶請求可以使用的模塊列表時,該模塊是否應該被列出。如果設置該選項爲false,可以創建隱藏的模塊。默認值是true。 Timeout #→通過該選項可以覆蓋客戶指定的IP超時時間。通過該選項可以確保rsync服務器不會永遠等待一個崩潰的客戶端。超時單位爲秒鐘,0表示沒有超時定義,這也是默認值。對於匿名rsync服務器來說,一個理想的數字是600。
創建rsyncd.conf文件:
注:如果以"use chroot = no"選項運行可寫的rsync守護程序的話,***者就可能通過誘騙rsync在模塊之外創建文件,所以出於安全考慮,建議將該選項設置爲yes。
基於安全性考慮,對於rsync的備份源最好僅允許以只讀方式做下行同步,若確實需要做上行同步時,建議改用SSH備份源。另外,下行備份可以採用匿名的方式,只要將其中的”auth users”和”secrets file”配置記錄去掉就可以了。
爲備份賬戶創建數據文件:
根據上一步的設置,創建賬號數據文件,添加一行用戶記錄,以冒號分隔,用戶名稱爲backupuser,密碼爲pwd123。由於賬號信息採用明文存放,因此應調整文件權限,避免賬號信息泄露。
設置rsyncd_users.db文件的權限爲700或600,權限設置不對的話身份驗證會失敗
與配置SSH備份源類似,備份用戶backuper也需要對源目錄/var/www/html/有相應的讀取權限。實際上只要other組有讀取權限,則備份用戶backuper和運行用戶nobody也就有了讀取權限了。
啓動rsync服務程序,執行”rsync --daemon”命令就可以啓動rsync服務,以獨立監聽服務的方式運行,若要關閉rsync服務,可以採用kill進程的方式。
將”rsync --daemon”保存到/etc/rc.local文件中,確保系統啓動後自動啓動rsync服務。
上面啓動rsync服務程序是通過”rsync --daemon”方式啓動rsync服務。考慮到異地備份的特性,通常並不需要全天不間斷運行,最好只是在有客戶機連接的時候才啓用,因此可以將rsync交給超級服務xinetd管理,只要修改相應配置並啓動xinetd服務,就可以提供rsync服務了。也就是當xinetd服務接收到客戶端的同步請求後,會把rsync同步請求轉給rsync程序。
配置方法:
修改後內容如下:
注:將disable = yes改爲no;確信有- -daemon服務選項.
安裝xinetd服務軟件包:
啓動xinetd服務:
至此rsync備份源配置完畢,下面使用rsync備份工具實現備份操作。
格式1:rsync 選項用戶名@備份源服務器IP::共享模塊名目標目錄
或
格式2:rsync 選項 rsync://用戶名@備份源服務器IP/共享模塊名目標目錄
在客戶機上執行rsync命令實現下行同步操作:
或
編寫rsync備份腳本:
rsync備份源的無交互驗證,對於rsync備份源來說,可使用環境變量RSYNC_PASSWORD來存放密碼。執行rsync備份任務時,會自動讀取該變量,並在需要時發送給rsync源服務器來進行驗證。如下所示:
Rsync備份腳本如下:
內容如下
設置計劃任務,在crond計劃任務中按指定計劃執行腳本。
到此rsync備份源配置完畢。
由於篇幅過長,影響各位看官閱讀質量,故將"rsync+inotify實時同步"放到下篇博文中進行介紹.