CentOS下rsync服務(wù)器安裝與配置-數(shù)據(jù)同步|文件增量備份
編輯:狂族晨曦 來(lái)源:系統(tǒng)運(yùn)維,經(jīng)驗(yàn)雜筆 日期:2016-08-05 閱讀: 3,449 次 4 條評(píng)論 » 百度已收錄
我們?cè)谑褂梅?wù)器發(fā)布我們的網(wǎng)站或者生產(chǎn)環(huán)境中部署業(yè)務(wù)的時(shí)候,通常要考慮到文件的備份,而文件的備份比較高效的備份是增量備份,rsync軟件就是這樣的一個(gè)工具。
為了實(shí)現(xiàn)多個(gè)服務(wù)器負(fù)載均衡,我們需要這幾個(gè)服務(wù)器之間進(jìn)行數(shù)據(jù)同步,而rsync軟件也能勝任,下面先森來(lái)介紹如何架設(shè)rsync服務(wù)器來(lái)達(dá)到文件增量備份和數(shù)據(jù)同步的功能。

Rsync同步
什么是rsync
Rsync(remote synchronize)是一個(gè)遠(yuǎn)程文件同步工具;Rsync使用“Rsync算法”來(lái)同步文件,該算法只傳送兩個(gè)文件的不同部分,因此速度相當(dāng)快;
Rsync是替代rcp的一個(gè)工具,目前由rsync.samba.org維護(hù),因而rsync.conf文件的格式類似于samba的主配置文件;
Rsync可通過(guò)rsh或ssh使用,也能以daemon模式運(yùn)行,以daemon方式運(yùn)行時(shí),Rsync Server會(huì)打開一個(gè)873端口等待客戶端連接.連接時(shí),Rsync Server會(huì)檢查口令是否相符,若口令相符,則進(jìn)行文件傳輸.第一次會(huì)把整份文件傳輸一次,以后則為增量傳輸;
Rsync支持大多數(shù)的類Unix系統(tǒng)(Linux、Solaris、BSD等);此外,在windows平臺(tái)也有相應(yīng)的版本,如cwRsync和Sync2NAS等工具。
環(huán)境準(zhǔn)備
既然是同步,首先我們需要準(zhǔn)備的是兩臺(tái)服務(wù)器。先森準(zhǔn)備的是虛擬機(jī)上的兩臺(tái)裝好CentOS 6.8的服務(wù)器。
為了方便,我們稱其中主要使用的、產(chǎn)生數(shù)據(jù)的一臺(tái)為服務(wù)端。用于備份數(shù)據(jù)的那臺(tái)稱為客戶端。
兩臺(tái)服務(wù)器都需要安裝rsync。
rsyncf服務(wù)端
rsync的安裝
rsync有很多種安裝方式,最簡(jiǎn)單的是yum安裝,復(fù)雜一點(diǎn)的是編譯安裝,還有先森選擇的是rpm包安裝。
先森rsync版本是的rsync-3.0.9-2.el6.rfx.x86_64.rpm,直接安裝即可。
rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm
rsync的啟動(dòng)
方法一:CentOS 默認(rèn)以 xinetd 方式運(yùn)行 rsync 服務(wù)。
所以選擇這種方式啟動(dòng)還需要安裝超級(jí)守護(hù)進(jìn)程xinetd。
yum install -y xinetd
rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync。
編輯rsync的xinetd配置文件/etc/xinetd.d/rsync文件,修改參數(shù)
server_args = --daemon --config=/etc/rsyncd/rsyncd.conf
可以配置rsync服務(wù)器啟動(dòng)時(shí)的參數(shù)。(一般不需要)
要配置以 xinetd 運(yùn)行的 rsync 服務(wù)需要執(zhí)行如下的命令:
chkconfig rsync on service xinetd restart
方法二:獨(dú)立運(yùn)行 rsync 服務(wù)
最簡(jiǎn)單的獨(dú)立運(yùn)行 rsync 服務(wù)的方法是執(zhí)行如下的命令:
/usr/bin/rsync --daemon
#編輯 /etc/rc.local文件 加入
/usr/bin/rsync --daemon
保證每次開機(jī)啟動(dòng)都會(huì)自動(dòng)啟動(dòng)rsync服務(wù)。
方法一的優(yōu)點(diǎn)是,開啟、停止rsync服務(wù)方便。
方法二的優(yōu)點(diǎn)在于不用先安裝一個(gè)服務(wù)。如何選擇還是視使用情況而定了。
一般來(lái)說(shuō):rsync服務(wù)器負(fù)載比較高,則使用獨(dú)立啟動(dòng)模式
rsync服務(wù)器負(fù)載較低,使用xinetd運(yùn)行方式
rsync的配置
rsync的主要有以下三個(gè)配置文件:rsyncd.conf (主配置文件)
rsyncd.secrets (密碼文件)
rsyncd.motd (rysnc服務(wù)器信息:連接后的歡迎信息)
兩種 rsync 服務(wù)運(yùn)行方式都需要配置 rsyncd.conf,其格式類似于 samba 的主配置文件。
# mkdir /etc/rsyncd # cd /etc/rsyncd # touch rsyncd.conf # touch rsyncd.secrets # touch rsyncd.motd
配置文件 rsyncd.conf 默認(rèn)在 /etc 目錄下。為了將所有與 rsync 服務(wù)相關(guān)的文件放在單獨(dú)的目錄下,可以執(zhí)行如下命令:
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
注:創(chuàng)建軟鏈接一定要用絕對(duì)路徑,用相對(duì)路徑會(huì)造成斷鏈。
為了密碼安全,我們需要把rsyncd.secrets的權(quán)限設(shè)置為600
chmod 600 rsyncd.secrets
1、配置rsyncd.conf文件
#服務(wù)器傳輸文件時(shí)用root 權(quán)限執(zhí)行 uid = root gid = root #指定服務(wù)端口,默認(rèn)873 port = 873 use chroot = no #只讀,不讓客戶端上傳文件到服務(wù)器 read only = yes #limit access to private LANs #限制能訪問(wèn)該服務(wù)的網(wǎng)段 hosts allow=192.168.0.0/255.255.0.0 hosts deny=* #最大連接數(shù) max connections = 5 #告訴進(jìn)程寫到該文件中 pid file = /var/run/rsyncd.pid #密碼存在哪個(gè)文件 secrets file = /etc/rsyncd/rsyncd.secrets #服務(wù)器信息定義指向該文件,該文件可寫服務(wù)器信息,歡迎的文字 motd file = /etc/rsyncd/rsyncd.motd #rsync 服務(wù)器的日志 log file = /var/log/rsync.log #這是傳輸文件的日志 transfer logging = yes #日志文件格式 log format = %t %a %m %f %b syslog facility = local3 timeout = 300 #超時(shí)時(shí)間 # MODULE OPTIONS #模塊的名稱,可以自定義 [testhome] #同步的目錄 path = /usr/local/nginx/ftp list=yes #忽略IO錯(cuò)誤 ignore errors #驗(yàn)證用戶,我的用戶是root auth users = root comment = test home #不同步的目錄 exclude = .git/ #模塊的名稱,可以自定義 [datahome] #同步的目錄 path = /web/data #rsync 服務(wù)器上提供同步數(shù)據(jù)的目錄在服務(wù)器上模塊是否顯示列出來(lái)。 list=yes #忽略IO錯(cuò)誤 ignore errors #驗(yàn)證用戶,我的用戶是user auth users = user #注釋可以自己定義,寫什么都行,寫點(diǎn)相關(guān)的內(nèi)容就行 comment = data home #不同步的目錄 exclude = .git/
2、配置rsyncd.secrets文件
密碼文件: rsyncd.secrets的內(nèi)容格式:“用戶名:口令”
例:
root:123456 user:123456
為了密碼的安全性,我們要保證把權(quán)限設(shè)為600以及root權(quán)限
chown root:root /etc/rsyncd/rsyncd.secrets chmod 600 /etc/rsyncd/rsyncd.secrets
3、配置rsyncd.motd文件
這個(gè)文件是客戶端連接時(shí)看到的歡迎信息文件,內(nèi)容自定義,也可以為空:
++++++++++++++++++++++++++++++++++++++ Welcome ++++++++++++++++++++++++++++++++++++++
4、開啟防火墻873端口
Linux 防火墻是用iptables,所以我們至少在服務(wù)器端要讓你所定義的rsync 服務(wù)器端口通過(guò),客戶端上也應(yīng)該讓通過(guò)。
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT /etc/rc.d/init.d/iptables save
查看一下防火墻是不是打開了 873端口;
iptables -L -n
5、啟動(dòng)rsync
service xinetd start
6、查看服務(wù)是否運(yùn)行
netstat -an | grep 873
tcp 0 0 :::873 :::* LISTEN 3399/xinetd
rsyncf客戶端
1、安裝
客戶端也要安裝rsync,但是不用做配置,也不用啟動(dòng),因?yàn)榭蛻舳藘H僅需要能夠運(yùn)行# rsync *** 這條命令
yum install -y xinetd rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm
2、同步數(shù)據(jù)
(1)方式一:
rsync -avzP root@192.168.2.72::testhome /tmp/david/
參數(shù)說(shuō)明:-a --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD。
-z 傳輸時(shí)壓縮;
-P 傳輸進(jìn)度;
-v --verbose 詳細(xì)模式輸出;
-r 是遞歸;
-l 是鏈接文件,意思是拷貝鏈接文件;
-p 表示保持文件原有權(quán)限;
-t 保持文件原有時(shí)間;
-g 保持文件原有用戶組;
-o 保持文件原有屬主;
-D 相當(dāng)于塊設(shè)備文件。
root是認(rèn)證用戶,IP地址是服務(wù)端的IP,testhome是配置文件中寫的模塊名稱,/tmp/david是指保存到客戶端的位置。
(2)方式二:
rsync -avzP --delete root@192.168.2.72::testhome /tmp/david/
這回我們引入一個(gè) –delete 選項(xiàng),表示客戶端上的數(shù)據(jù)要與服務(wù)器端完全一致,如果 linuxsirhome目錄中有服務(wù)器上不存在的文件,則刪除。最終目的是讓linuxsirhome目錄上的數(shù)據(jù)完全與服務(wù)器。
上保持一致;用的時(shí)候要小心點(diǎn),最好不要把已經(jīng)有重要數(shù)所據(jù)的目錄,當(dāng)做本地更新目錄,否則會(huì)把你的數(shù)據(jù)全部刪除。
(3)方式三:
rsync -avzP --delete --password-file=rsync.password root@192.168.2.72::testhome /tmp/david/
這次我們加了一個(gè)選項(xiàng) –password-file=rsync.password ,這是當(dāng)我們以linuxsir用戶登錄rsync服務(wù)器同步數(shù)據(jù)時(shí),密碼將讀取 rsync.password 這個(gè)文件。
這個(gè)文件內(nèi)容只是服務(wù)端中rsync中設(shè)置的root認(rèn)證用戶的密碼。
在你需要的地方創(chuàng)建rsync.password文件,然后只保存密碼在其中:
touch rsync.password echo "123456" > rsync.password chmod 600 rsync.password
3、用crontab讓客戶端自動(dòng)與服務(wù)端同步數(shù)據(jù)
我們?cè)?etc/cron.daily.rsync中創(chuàng)建了一個(gè)文件名為:root.sh ,并且是權(quán)限是 755
mkdir /etc/cron.daily.rsync cd /etc/cron.daily.rsync touch root.sh chmod 755 root.sh
編輯root.sh,內(nèi)容如下:
vim root.sh
#!/bin/sh #192.168.2.72 testhome backup /usr/bin/rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.secrets root@192.168.2.72::testhome /tmp/david/
:wq
然后創(chuàng)建定時(shí)任務(wù):
crontab -e
*/1 * * * * /usr/bin/run-parts /etc/cron.daily.rsync 1> /dev/null
表示每分鐘執(zhí)行一次/etc/cron.daily.rsync里的腳本。
查看定時(shí)任務(wù):
crontab -l
當(dāng)然,如果你覺(jué)得創(chuàng)建腳本麻煩的話,也可以直接將命令寫在定時(shí)任務(wù)中。
crontab -e */1 * * * * usr/bin/rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.secrets root@192.168.2.72::testhome /tmp/david/
測(cè)試
測(cè)試的話非常簡(jiǎn)單,只需要在服務(wù)端同步文件夾內(nèi)增加或刪除文件,過(guò)一分鐘后到客戶端上看效果即可。
總結(jié)
配置Rsync的環(huán)境一定要確保防火墻873端口打開,以及SELinux關(guān)閉,否則肯定會(huì)出錯(cuò)的。
在配置的過(guò)程中可能會(huì)出現(xiàn)這樣那樣的問(wèn)題,先森也會(huì)整理一篇問(wèn)題總結(jié),后續(xù)分享。
Rsync與Crontab搭配起來(lái)同步并不是最好的同步方案,Rsync可以與其他工具使用使得同步更安全、準(zhǔn)確,請(qǐng)悉知。
歷史上的今天:
轉(zhuǎn)載請(qǐng)注明出處來(lái)自http://www.cnidcc.cn/rsync_crontab.html

川公網(wǎng)安備 51011202000104號(hào)
不錯(cuò),學(xué)習(xí)了!
等以后有錢接觸到了,再回來(lái)學(xué)習(xí)!
很實(shí)用,謝謝分享!
寫的很詳細(xì) 不錯(cuò)學(xué)習(xí)了