一、流程圖
<a href="http://blog.51cto.com/attachment/201301/140941434.jpg" target="_blank"></a>
二、rsync的安裝
1、解除安裝原來的rsync
當然在安裝Linux作業系統時,rsync是會被預設安裝好的,如果覺得版本太低的話,可以通過如下步驟将其解除安裝掉
#rmp -qla | grep rsync //檢視一下安裝的rsync版本
#rmp -e --nodeps rsync.2.6.. //解除安裝原來的rsync版本
2、安裝新版本的rsync(伺服器A和備份伺服器B操作是一樣的)
rsync下載下傳位址如下
<a href="http://rsync.samba.org/">http://rsync.samba.org/</a>
#tar xf rsync-3.0.9.tar.gz
#cd rsync-3.0.9
#./configure --prefix=/usr/local/rsync
#make
#make install
3、在服務A(即rsync服務端)下建立配置檔案
#vim /etc/rsyncd.conf //預設是沒有的
添加如下内容
uid = nobody
gid = nobody
port = 873 //rsync的端口
use chroot = no
max connections = 3 //允許用戶端的最大連接配接數
strict modes = yes //是否需要密碼驗證檔案
注:這裡為yes時,密碼檔案權限要改為600
pid file = /var/run/rsync.pid //pid檔案
lock file = /var/run/rsync.lock //鎖檔案
log file = /var/log/rsync.log // 日志檔案
[web] //自定義的子產品,用來用戶端做驗證的
path = /data/ //要備份的目錄
ignore = errors //當有一些錯誤時,忽略
read only = no //允許用戶端上傳檔案
hosts allow = 192.168.1.6 //允許該IP的用戶端同步
hosts deny = * //不允許
list = false
uid = root //用于同步的屬主和屬組
gid = root
auth users = centos //用戶端用來驗證的使用者名
secrets file = /etc/rsync.pas //密碼檔案
4、在用戶端和伺服器端建立密碼檔案
在伺服器端(即伺服器A上)
#vim /etc/rsync.pas //這個密碼檔案是要和配置檔案中的一緻的。
centos:rsync //其中centos為驗證使用者,rsync為密碼
#chmod 600 /etc/rsync.pas //修改權限為600
在用戶端(即伺服器B上)
rsync //此密碼要和服務端相同
5、在伺服器端啟動rsync的守護程序
#/usr/local/rsync/bin/rsync --daemon //啟動守護程序
#ps -ef | grep rsync //檢視程序是否啟動
6、同步資料到用戶端
rsync -vzrtopg --progress --delete [email protected]::web --password-file=/etc/rsyncd.secrets /data //把服務端檔案同步到本地data目錄下
-v, --verbose 詳細模式輸出
-q, --quiet 精簡輸出模式
-r, --recursive 對子目錄以遞歸模式處理
-p, --perms 保持檔案權限
-o, --owner 保持檔案屬主資訊
-g, --group 保持檔案屬組資訊
--delete 删除那些DST中SRC沒有的檔案
--progress 顯示備份過程
-t, --times 保持檔案時間資訊
7、編寫腳本并建立定時任務讓定時執行備份
#vim /home/bakrsync.sh
#!/bin/bash
#
RSYNC=/usr/local/rsync/bin/rsync
#chmod +x /home/bakrsync.sh
#contab -e
01 01 * * * /home/basrsync.sh & //每天淩晨放在背景自動執行
配置一:
ignore errors
說明:這個選項最好加上,否則再很多crontab的時候往往發生錯誤你也未可知,因為你不可能天天去看每時每刻去看log,不加上這個出現錯誤的幾率相對會很高,因為任何大點的項目和系統,磁盤IO都是一個瓶頸
Rsync error:
錯誤一:
@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
說明:這是因為密碼設定錯了,無法登入成功,檢查一下rsync.pwd,看客服是否比對。還有伺服器端沒啟動rsync 服務也會出現這種情況。
錯誤二:
password file must not be other-accessible
continuing without password file
Password:
說明:這是因為rsyncd.pwd rsyncd.sec的權限不對,應該設定為600。如:chmod 600 rsyncd.pwd
錯誤三:
@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
說明:這是因為你在 rsync.conf 中設定的 path 路徑不存在,要建立目錄才能開啟同步
錯誤四:
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
說明:防火牆問題導緻,這個最好先徹底關閉防火牆,排錯的基本法就是這樣,無論是S還是C,還有ignore errors選項問題也會導緻
錯誤五:
@ERROR: access denied to www from unknown (192.168.1.123)
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)
說明:此問題很明顯,是配置選項host allow的問題,初學者喜歡一個允許段做成一個配置,然後子產品又是同一個,緻使導緻
錯誤六:
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(244) [generator=2.6.9]
rsync error: received SIGUSR1 (code 19) at main.c(1182) [receiver=2.6.9]
說明:導緻此問題多半是服務端服務沒有被正常啟動,到伺服器上去查查服務是否有啟動,然後檢視下 /var/run/rsync.pid 檔案是否存在,最幹脆的方法是殺死已經啟動了服務,然後再次啟動服務或者讓腳本加入系統啟動服務級别然後shutdown -r now伺服器
錯誤七:
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(604) [sender=2.6.9]
說明:原資料目錄裡沒有資料存在
本文轉自 沐木小布丁 51CTO部落格,原文連結:http://blog.51cto.com/sxhxt/1130243