天天看點

rsync

rsync連接配接遠端主機進行同步或備份時有兩種途徑:

使用遠端shell程式(如ssh或rsh)進行連接配接,或使用TCP直接連接配接rsync daemon。

Rsync可以通過rsh或ssh使用,也能以daemon模式去運作,在以daemon方式運作時Rsync server會打開一個873端口,等待用戶端去連接配接。連接配接時,Rsync server會檢查密碼是否相符,若通過密碼查核,則可以開始進行檔案傳輸。第一次連通完成時,會把整份檔案傳輸一次,以後則就隻需進行增量份。

本地拷貝: 

   rsync [選項] SRC… DEST,在本地進行複制操作

shell模式: 

   rsync [選項] [user@]Host:SRC… [DEST],拉動作,從遠端主機拉檔案到本地 

   rsync [選項] SRC… [user@]Host:DEST,推動作,把本地檔案推送到遠端主機

daemon模式: 

   rsync [選項] [user@]Host::SRC… [DEST],拉動作 

   rsync [選項] rsync://[user@]Host [:port]/SRC… [DEST],仍然是拉動作 

   rsync [選項] SRC... [user@]Host::DEST,推動作 

   rsync [選項] SRC...rsync://[user@]Host [:port]/DEST,仍然是推動作

目标:多伺服器檔案同步

環境: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
 
[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 [email protected]::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 

解決:伺服器端配置檔案 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 #密碼檔案 

繼續閱讀