CentOS 5.5下rsync使用技巧與權(quán)限問題解讀
原創(chuàng)【51CTO獨(dú)家特稿】搞運(yùn)維的同行們對(duì)遠(yuǎn)程同步工具Rsync應(yīng)該都不陌生。Rsync的使用和配置方法網(wǎng)上已經(jīng)有很多,本文就不用再多說。這篇文章主要是跟大家分享一下我在使用Rsync的過程中總結(jié)的一些心得經(jīng)驗(yàn),以及出現(xiàn)一些權(quán)限問題的時(shí)候,應(yīng)該如何解決。
作者簡(jiǎn)介:余洪春(博客),網(wǎng)名撫琴煮酒,英文名Andrew.Yu,武漢某外企高級(jí)Linux/Unix系統(tǒng)管理員、項(xiàng)目實(shí)施工程師,紅帽RHCE講師,擅長(zhǎng)負(fù)載均衡高可用和中小型證券類和商務(wù)網(wǎng)站架構(gòu),目前關(guān)注網(wǎng)站架構(gòu)研究及網(wǎng)絡(luò)安全。
相關(guān)閱讀:FreeBSD 8上的Rsync同步簡(jiǎn)易教程
推薦專題:企業(yè)內(nèi)網(wǎng)開發(fā)環(huán)境部署與管理全攻略(FreeBSD+PHP)
本文使用的測(cè)試機(jī)器:
rsync服務(wù)器 64-bit Centos5.5 192.168.21.41
rsync客戶端 64-bit FreeBSD8.1 192.168.21.44
一、什么是rsync?
Rsync(remote synchronize)是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺(tái)主機(jī)間的文件。Rsync使用所謂的“Rsync算法”來(lái)使本地和遠(yuǎn)程兩個(gè)主機(jī)之間的文件達(dá)到同步,這個(gè)算法只傳送兩個(gè)文件的不同部分,而不是每次都整份傳送,因此速度相當(dāng)快。
rsync的優(yōu)點(diǎn)
①可以鏡像保存整個(gè)目錄樹和文件系統(tǒng);
②可以很容易做到保持原來(lái)文件的權(quán)限、時(shí)間、軟硬鏈接等;
③無(wú)須特殊權(quán)限即可安裝;
④優(yōu)化的流程,文件傳輸效率高;
⑤可以使用rsh、ssh等方式來(lái)傳輸文件,當(dāng)然也可以通過直接的socket連接;
⑥支持匿名傳輸
二、服務(wù)器端的配置
具體的就不多說了,重要的地方說一下。首先檢查rsync是否安裝:
rpm –q rsync rsync-2.6.8-3.1
說明rsync已安裝,如果提示出現(xiàn) package rsync is not installed 則說明這個(gè)軟件報(bào)沒有安裝大家可以使用yum進(jìn)行安裝
另外,關(guān)閉防火墻和SElinux,因?yàn)槭莾?nèi)網(wǎng)中傳輸,所以這些沒必要
service iptables stop && chkconfig iptables off setenforce 0
下面分享下我自己定義的配置文件/etc/rsyncd.conf。這個(gè)文件是我自己定義的,并不是系統(tǒng)創(chuàng)建的,當(dāng)然你也可以叫不同的名字;文件我先貼出來(lái),方便線上環(huán)境的朋友直接復(fù)制,后面再寫上詳細(xì)注釋。
uid = nobody gid = nobody user chroot = no max connections = 200 timeout = 600 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log [backup] path=/backup/ ignore errors read only = no list = no hosts allow = 192.168.21.0/255.255.255.0 auth users = test secrets file = /etc/rsyncd.password
注釋:
uid = nobody
進(jìn)行備份的用戶,nobody 為任何用戶
gid = nobody
進(jìn)行備份的組,nobody為任意組
use chroot = no
如果"use chroot"指定為true,那么rsync在傳輸文件以前首先chroot到path參數(shù)所指定的目錄下。這樣做的原因是實(shí)現(xiàn)額外的安全防護(hù),但是缺點(diǎn)是需要以root權(quán)限,并且不能備份指向外部的符號(hào)連接所指向的目錄文件。默認(rèn)情況下chroot值為true.但是這個(gè)一般不需要,我選擇no或false
list = no
不允許列清單
max connections = 200
***連接數(shù)
timeout = 600
覆蓋客戶指定的IP超時(shí)時(shí)間,也就是說rsync服務(wù)器不會(huì)永遠(yuǎn)等待一個(gè)崩潰的客戶端。
pidfile = /var/run/rsyncd.pid
pid文件的存放位置
lock file = /var/run/rsync.lock
鎖文件的存放位置
log file = /var/log/rsyncd.log
日志文件的存放位置
[backup]
這里是認(rèn)證模塊名,即跟samba語(yǔ)法一樣,是對(duì)外公布的名字
path = /backup/
這里是參與同步的目錄
ignore errors
可以忽略一些無(wú)關(guān)的IO錯(cuò)誤
read only = no
允許可讀可寫
list = no
不允許列清單
hosts allow = 192.168.21.0/255.255.255.0
這里跟samba的語(yǔ)法是一樣的,只允許192.168.21.0/24的網(wǎng)段進(jìn)行同步,拒絕其它一切
auth users = test
認(rèn)證的用戶名
secrets file = /etc/rsyncd.password
密碼文件存放地址
注意:對(duì)于這個(gè)地方的配置文件,雖然解釋的很清楚,可是一些朋友始終還會(huì)在這里出錯(cuò),這里我提亮點(diǎn)易錯(cuò)點(diǎn):
1、[backup] 認(rèn)證模塊名和 path = /backup/ 參與同步的目錄
這里的path 大家要記好了,這里不要隨便的一設(shè)置就直接完事,要知道這里是認(rèn)證模塊的,以后從客戶機(jī)備份的數(shù)據(jù)會(huì)存儲(chǔ)在這里。
2、auth users = redhat 認(rèn)證的用戶名
這個(gè)名字是服務(wù)器端實(shí)實(shí)在在存在用戶,大家不要直接跟步驟走卻忽略了這點(diǎn)。如果服務(wù)器端少了這個(gè)的話我估計(jì)你的數(shù)據(jù)同步就實(shí)現(xiàn)不了,大家要謹(jǐn)記。
3、path = /backup/ 參與同步的目錄
這個(gè)需要稍后自己要在根目錄下自己建
cd / mkdir backup chmod –R 777 /backup echo “test:test” > /etc/rsyncd.password
(這里我設(shè)置的是用戶名和密碼一致)
為了安全起見,我設(shè)置他的權(quán)限為600
chmod 600 /etc/rsync.password
客戶端配置:
echo “test” > /etc/rsyncd.password
這里僅僅只需要密碼,不需要用戶了,免得要同步時(shí)還要手動(dòng)互動(dòng)
chmod 600 /etc/rsync.password
配置完了之后,可能會(huì)遇到一些權(quán)限問題。以下就一些常見的權(quán)限問題進(jìn)行解答:
#p#
問題一:
@ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服務(wù)器端的目錄不存在或無(wú)權(quán)限。
創(chuàng)建目錄并修正權(quán)限可解決問題。
問題二:
@ERROR: auth failed on module tee rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服務(wù)器端該模塊(tee)需要驗(yàn)證用戶名密碼,但客戶端沒有提供正確的用戶名密碼,認(rèn)證失敗。
提供正確的用戶名密碼解決此問題。
問題三:
@ERROR: Unknown module ‘tee_nonexists’ rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服務(wù)器不存在指定模塊。
提供正確的模塊名或在服務(wù)器端修改成你要的模塊以解決問題。
測(cè)試
都配置完畢之后就是測(cè)試了。在FreeBSD機(jī)器上,輸入命令
rsync -vzrtop --delete /home/andrewy/etc test@192.168.21.41::backup --password-file=/etc/rsyncd.password
查看同步效果。
注意:我這里是直接以root進(jìn)行操作。rsync以delete操作時(shí)要注意,它會(huì)完全同步這邊的目錄與服務(wù)器的目錄中的文件,這樣會(huì)產(chǎn)生一個(gè)后果,它會(huì)刪掉服務(wù)器中多余的文件,這樣做很危險(xiǎn),如果是線上機(jī)器,請(qǐng)慎之又慎,切記!
【編輯推薦】