Linux下利用rsync實現多服務器文件同步


windows做為文件服務器,使用rsync的windows服務版本,然后配置好就可以了。需要的朋友可以參考下。

windows做為文件服務器,使用rsync的windows服務版本:cwRsyncServer 下載地址:http://rsync.samba.org 

安裝過程要設置用於系統服務的帳號和密碼,可以默認。 
注:此帳號用於啟用crsync server服務,需要分配給帳號對要同步文件的相應權限,否則無法操作被同步的文件。 

目標:多服務器文件同步
 
環境:2台CentOS5.6
 
Web端:192.168.20.20
 
Backup端:192.168.20.21
 
需要備份目錄為:192.168.20.20:/usr/local/web1 /usr/local/web2
 
第一步:服務器端的配置

#rpm –qa |grep rsync && rpm –e rsync-** --dodeps

如果沒有的話,則自行下載安裝 (yum –y install rsync)

#cd /usr/local/
 
# wget http://www.samba.org/ftp/rsync/src-previews/rsync-3.0.6pre1.tar.gz
 
#tar –zxvf rsync-3.0.6pre1.tar.gz
 
#cd rsync-3.0.6pre1
 
#./configure –prefix=/usr/local/rsync 
 
# make && make install
 
# vi /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connections = 4
pid file = /usr/local/rsync/pid/rsyncd.pid
lock file = /usr/local/rsync/pid/rsync.lock
log file = /usr/local/rsync/pid/rsyncd.log
secrets file=/usr/local/rsync/pwd/rsyncd.pwd
hosts allow = 192.168.20.0/24
hosts deny = *
 
[web1]
path=/usr/local/web1
comment = backup web1
ignore errors
read only = yes
#list = no
auth users = web1
 
[web2]
path=/usr/local/web2
comment = backup web2
ignore errors
read only = yes
#list = no
auth users = web2

uid = nobody        //指定文件傳輸過程中的用戶身份
gid = nobody        //指定文件傳輸過程中的組身份
 
log file = /var/log/rsyncd.log        //指定使用獨立的日志文件的位置
pid file = /var/run/rsyncd.pid        //保存pid到指定文件,以便於使用腳本終止進程

read only = yes        //該目錄設置為只讀,即只允許客戶端下行同步,不允許上傳。若需要進行從備份機還原數據,改為no
rsyncd默認在873端口監聽服務,可在客戶端使用telnet連接測

# mkdir -p /usr/local/pid
 
# mkdir -p /usr/local/pwd
 
# vi /usr/local/rsync/pwd/rsyncd.pwd
web1:123456@789
 
web2:789@123456

格式為:用戶名:密碼
 
設置密碼文件僅僅root用戶能訪問

#chmod 600 /usr/local/rsync/pwd/rsyncd.pwd
 
# cp /usr/local/rsync/bin/rsync  /usr/bin/

在服務器端啟動rsync服務

# rsync –daemon (注意重啟kill后要把.pid .lock刪掉)

第二步:備份端的配置
 
安裝rsync軟件,同上
 
設置密碼文件只需填寫對應密碼:

# touch /usr/local/rsync/web1
 
# touch /usr/local/rsync/web2
 
# vi /usr/local/rsync/web1
 
     123456@789
 
# vi /usr/local/rsync/web2
 
     789@123456

同時設置為只有root有權限

# chmod 600 /usr/local/rsync/wbe1

創建備份目錄

# mkdir -p /usr/local/web1
 
# mkdir -p /usr/local/web2
 
# rsync –daemon

把服務器端文件web1備份到本機(備份機):

# /usr/bin/rsync -vzrtopg --progress --delete --exclude "logs/" --exclude "conf/ssl.*/" --password-file=/usr/local/rsync/web1 web1@192.168.20.20::web1 /usr/local/web1

# Web2 也是一樣的如上手動進行同步
 
--delete是指如果服務器端刪除了這一文件,那么客戶端也相應把文件刪除,保持真正的一致, 刪除本地目錄中多余的文件
 
-- exclude "logs/" 表示不對/web1/logs目錄下的文件進行備份。
 
--exclude "conf/ssl.*/"表示不對/web1/conf/ssl.*/目錄下的文件進行備份。
 
 
 
如果需要可以放到crontab 計划任務中間隔性的進行同步備份!

 

將以上命令寫入計划任務,每1分鍾執行,即可實現實時同步的效果。 

注: 
上面這個命令行中-vzrtopg里的v是verbose,z是壓縮,r是recursive,topg都是保持文件原有屬性如屬主、時間的參數。-- progress是指顯示出詳細的進度情況,--delete是指如果服務器端刪除了這一文件,那么客戶端也相應把文件刪除,保持真正的一致。 

附,rsync使用時的常見問題: 

錯誤1: rsync: read error: Connection reset by peer (104) 
rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2] 
解決:很大可能是服務器端沒有開啟 rsync 服務。開啟服務。 或者開啟了防火牆指定的端口無法訪問。 

錯誤2:@ERROR: chdir failed 
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2] 
解決:服務器端同步目錄沒有權限,cwrsync默認用戶是Svcwrsync。為同步目錄添加用戶Svcwrsync權限。 

錯誤3:@ERROR: failed to open lock file 
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2] 
解決:服務器端配置文件 rsyncd.conf中添加 lock file = rsyncd.lock 即可解決。 

錯誤4:@ERROR: invalid uid nobody 
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2] 
解決:在rsyncd.conf文件中添加下面兩行即可解決問題 
UID = 0 
GID = 0 

錯誤5:@ERROR: auth failed on module test2 
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=3.0.2] 
解決:服務端沒有指定正確的secrets file,請在 [test2]配置段添加如下配置行: 
auth users = coldstar #同步使用的帳號 
secrets file = rsyncd.secrets #密碼文件 

錯誤6:password file must not be other-accessible 
解決:客戶端的pass文件要求權限為600, chmod 600 /etc/rsync.pass 即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM