考慮到服務器數據的安全,我考慮增加一台備份服務器,通過數據同步,達到較好的冗余。
linux下有非常好的一個命令rsync能實現差異備份,下面就說說他的用法:
▲合適系統:紅旗DC 4.1 or 5.0或其他linux、FreeBSD系統
▲測試環境:紅旗DC 5.0
一、通過rsh或ssh命令
在沒有建立rsync服務器的情況下,我們能利用rsync命令直接進行快速的差異備份:
Code:
命令格式:
#rsync [option] 源路徑 目標路徑
其中:
[option]:
a:使用archive模式,等於-rlptgoD,即保持原有的文件權限
z:表示傳輸時壓縮數據
v:顯示到屏幕中
e:使用遠程shell程式(能使用rsh或ssh)
--delete:精確保存副本,源主機刪除的文件,目標主機也會同步刪除
--include=PATTERN:不排除符合PATTERN的文件或目錄
--exclude=PATTERN:排除所有符合PATTERN的文件或目錄
--password-file:指定用於rsync服務器的用戶驗證密碼
源路徑和目標路徑能使用如下格式:
rsync://[USER@]Host[:Port]/Path 服務器路徑
[USER@]Host::Path rsync服務器的另一種表示形式
[USER@]Host:Path 遠程路徑
LocalPath 本地路徑
※需要注意的是,來源或目的路徑最少要有一個是本地路徑,如果忽略本地路徑,則只會列出遠端的文件列表。
例子:
Code:
#rsync -ave ssh test:/home/ftp/pub/ /home/ftp/pub/
把源路徑中遠端test機器上的/home/ftp/pub/目錄中的內容,通過rsync同步到本地的/home/ftp/pub/目錄下。
◎小心源路徑結尾時候的/號,後綴/通知rsync復制該目錄的內容,但不復制目錄本身。例如:
Code:
#rsync -ave ssh test:/home/ftp/pub /home/ftp/
則會把pub目錄整個同步到本地/home/ftp/路徑中
Code:
#rsync -azv --delete rsync://[email protected]/blog /var/www/html/
通過linuxing登陸到192.168.1.100中,同步rsync服務器的blog項到本地的/var/www/html/,並刪除本地上源路徑中不存在的文件或目錄。
※千萬要注意--delete參數,在使用此參數的時候,建議用絕對路徑指定本地目錄,防止清空當前目錄。
二、建立rsync服務器
當服務器沒有開通ssh,或備份方沒有ssh權限的時候,我們能通過建立rsync服務器,進行匿名的數據同步。
要使用rsync服務,需要建立服務端和客戶端:
1、服務端
主設置文件:
Code:
#vi /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[test] #rsync區段的設定名稱
path = /var/www/html/test #需要同步的數據存放路徑
comment = test folder #注釋
uid = apache #采用什麼身份進行文件讀取
gid = apache #同上,必須是有讀取path權限的用戶、組
ignore errors #忽略錯誤
read only = yes #只讀
list = no #不能列表
auth users = linuxing #連接rsync服務的帳號
secrets file = /etc/rsyncd.secrets #指定存放帳號密碼的位置
帳號密碼文件:
Code:
#vi /etc/rsyncd.secrets
#格式:帳號:密碼 (每行一組,帳號和密碼用:號分開)
linuxing:backup
保存後,需要確保用戶是root,權限是600
Code:
#chown root:root /etc/rsyncd.secrets
#chmod 600 /etc/rsyncd.secrets
啟動服務:
#rsync --daemon
確保開機自動啟動:
修改/etc/xinetd.d/rsync文件,把其中的disable=yes改為disable=no
Code:
#sed -i -e "/disable/{ s/yes/no/ }" /etc/xinetd.d/rsync
#service xinetd.d restart
2、客戶端
使用用法一中涉及到rsync://的方法即可。
如果rsync服務器需要密碼驗證,能增加--password-file參數:
Code:
#rsync -azv --delete rsync://[email protected]/test /var/www/html --password-file=/etc/test
#vi /etc/test
#指定訪問密碼
bakcup
#chmod 600 /etc/test
3、定時
另外,由於rsync客戶端沒有定時功能,我們能通過在crontab中增加計劃任務實現定時的同步,如:(不要使用-v參數,防止刷屏)
Code:
#crontab -e
0 22 * * 1-5 /usr/bin/rsync -az --delete rsync://[email protected]/test /var/www/html --password-file=/etc/test
#指定星期一到五,每晚十點整進行同步
三、總結
使用rsync的好處:可通過ssh進行網絡加密傳輸,也能利用ssh客戶端密鑰建立信任關系。當在兩台計算機之間保持大型、復雜目錄結構的同步時候,比tar或wget等方式都要快。而且能做到精確同步。
四、附錄
如果是通過編譯安裝的rsync(如FreeBSD),路徑有點不同:
服務器的設置文件在:/usr/local/etc/rsyncd.conf
啟動文件:/usr/local/etc/rc.d/rsyncd.sh
命令文件:/usr/local/bin/rsync
系統啟動托管:/etc/rc.conf(增加rsyncd_enable="YES")