測試環境
wxbak
CentOS 5.5 inotify-tools-3.14-1.el5
nxbak CentOS 5.5 xinetd-2.3.14-10.el5
測試前,先安裝好所需要的軟件包。測試中,進行了wxbak、nxbak的雙向同步測試。
這裡僅列出單向測試記錄。
nxbak上安裝xinetd服務,充當rsync服務端;
wxbak上安裝inotify-tools,可以實時監測wxbak機上指定文件夾的變化,並觸發相應的事件,激活rsync以實時同步文件系統的變化到nxbak機上。
具體如下:
服務端
1.開啟rsync服務
編輯 /etc/xinetd.d/rsync文件
[root@nxbak]# cat /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
將disable = yes 改為 disable = no
2.配置rsync服務
創建/etc/rsyncd.conf
[root@nxbak]# vim /etc/rsyncd.conf
#2012-06-11 [email protected] settings for rsync server
#rsync backup side settings
uid = root
gid = root
use chroot = no
max connections = 200
timeout = 600
strict modes = yes
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
#backup fs settings
[nxbak]
path = /data/nxbak
ignore errors
comment = rsync rman backup
auth users=oracle
uid = root
gid = root
secrets file = /etc/rsync_server.pwd
read only = no
list = no
hosts allow = 192.168.1.118
hosts deny = 0.0.0.0/32
3.密碼文件
創建/etc/rsync_server.pwd
[root@nxbak]# vim /etc/rsync_server.pwd
oracle:security
修改權限
[root@nxbak]# chmod 600 /etc/rsync_server.pwd
[root@nxbak]# ll /etc/rsync_server.pwd
-rw------- 1 root root 17 Jun 12 11:43 /etc/rsync_server.pwd
客戶端
1.密碼文件
[root@wxbak ]# vim /etc/rsync_client.pwd
security
修改權限
[root@wxbak]# chmod 600 /etc/rsync_client.pwd
[root@wxbak]# ll /etc/rsync_client.pwd
-rw------- 1 root root 10 Jun 12 11:42 /etc/rsync_client.pwd
2.rsync+inotify腳本
[root@wxbak ]# cat /apps/scripts/rsync.sh
#!/bin/sh
#abstract:
#rsync auto sync script
#2012-06-11 [email protected] first_release
#variables
current_date=$(date +%Y%m%d_%H%M%S)
rman_path=/apps/rmanbak
log_file=/var/log/rsync.log
#rsync
rsync_server=192.168.1.119
rsync_user=oracle
rsync_pwd=/etc/rsync_client.pwd
rsync_module=nxbak
#rsync_client password check
if [ ! -e ${rsync_pwd} ]; then
echo -e "rsync client password file ${rsync_pwd} does not exist!"
exit 0
fi
#inotify function
inotify_fun(){
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T%w%f' \
-e modify,delete,create,move ${rman_path} | while read file
do
/usr/bin/rsync -vrtzopg --progress --delete --password-file=${rsync_pwd} ${rman_path} ${rsync_user}@${rsync_server}::${rsync_module}
done
}
#inotify
inotify_fun >> ${log_file} 2>&1 &
測試
1.開啟xinetd服務(服務端)
[root@nxbak]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
查看服務監聽狀態netstat
[root@nxbak]# netstat -nap | grep xinetd
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 5310/xinetd
或者lsof
[root@nxbak]# lsof -i:873
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xinetd 5310 root 5u IPv4 597328 TCP *:rsync (LISTEN)
2.運行rsync腳本(客戶端)
[root@wxbak ]# /apps/scripts/rsync.sh
查看腳本運行狀態
[root@wxbak ]# ps -ef | grep rsync
root 29896 1 0 09:42 pts/1 00:00:00 /bin/sh /apps/scripts/rsync.sh
root 29898 29896 0 09:42 pts/1 00:00:00 /bin/sh /apps/scripts/rsync.sh
root 29902 18433 0 09:42 pts/1 00:00:00 grep rsync
3.變更同步目錄(客戶端)
[root@wxbak rmanbak]# pwd
/apps/rmanbak
[root@wxbak rmanbak]# touch rsync
[root@wxbak rmanbak]# touch inotify
[root@wxbak rmanbak]# ll
total 1211696
-rw-r--r-- 1 oracle oinstall 3414 Jun 12 13:46 20120612_134619-inc0.log
-rw-r--r-- 1 oracle oinstall 3038 Jun 12 13:50 20120612_134935-inc2.log
-rw-r--r-- 1 oracle oinstall 1664 Jun 12 23:00 20120612_230001-obsolete.log
-rw-r--r-- 1 oracle oinstall 3240 Jun 12 23:45 20120612_234501-inc2.log
-rw-r----- 1 oracle oinstall 1112170496 Jun 12 13:46 20120612_inc0_87ndbqle_1_1.bkp
-rw-r----- 1 oracle oinstall 4096 Jun 12 13:46 20120612_inc0_89ndbqlv_1_1.bkp
-rw-r----- 1 oracle oinstall 37888 Jun 12 13:49 20120612_inc2_8andbqrg_1_1.bkp
-rw-r----- 1 oracle oinstall 319488 Jun 12 13:50 20120612_inc2_8bndbqri_1_1.bkp
-rw-r----- 1 oracle oinstall 11927552 Jun 12 13:50 20120612_inc2_8cndbqsl_1_1.bkp
-rw-r----- 1 oracle oinstall 7168 Jun 12 13:50 20120612_inc2_8dndbqsn_1_1.bkp
-rw-r----- 1 oracle oinstall 55731200 Jun 12 23:45 20120612_inc2_8endctnv_1_1.bkp
-rw-r----- 1 oracle oinstall 47374336 Jun 12 23:45 20120612_inc2_8fndcto0_1_1.bkp
-rw-r----- 1 oracle oinstall 11927552 Jun 12 23:45 20120612_inc2_8gndctp3_1_1.bkp
-rw-r----- 1 oracle oinstall 6656 Jun 12 23:45 20120612_inc2_8hndctp6_1_1.bkp
-rw-r--r-- 1 root root 0 Jun 13 09:48 inotify
-rw-r--r-- 1 root root 0 Jun 13 09:48 rsync
4.查看同步效果(服務端)
[oracle@nxbak rmanbak]$ pwd
/data/nxbak/rmanbak
[oracle@nxbak rmanbak]$ ll
total 1211696
-rw-r--r-- 1 oracle oinstall 3414 Jun 12 13:46 20120612_134619-inc0.log
-rw-r--r-- 1 oracle oinstall 3038 Jun 12 13:50 20120612_134935-inc2.log
-rw-r--r-- 1 oracle oinstall 1664 Jun 12 23:00 20120612_230001-obsolete.log
-rw-r--r-- 1 oracle oinstall 3240 Jun 12 23:45 20120612_234501-inc2.log
-rw-r----- 1 oracle oinstall 1112170496 Jun 12 13:46 20120612_inc0_87ndbqle_1_1.bkp
-rw-r----- 1 oracle oinstall 4096 Jun 12 13:46 20120612_inc0_89ndbqlv_1_1.bkp
-rw-r----- 1 oracle oinstall 37888 Jun 12 13:49 20120612_inc2_8andbqrg_1_1.bkp
-rw-r----- 1 oracle oinstall 319488 Jun 12 13:50 20120612_inc2_8bndbqri_1_1.bkp
-rw-r----- 1 oracle oinstall 11927552 Jun 12 13:50 20120612_inc2_8cndbqsl_1_1.bkp
-rw-r----- 1 oracle oinstall 7168 Jun 12 13:50 20120612_inc2_8dndbqsn_1_1.bkp
-rw-r----- 1 oracle oinstall 55731200 Jun 12 23:45 20120612_inc2_8endctnv_1_1.bkp
-rw-r----- 1 oracle oinstall 47374336 Jun 12 23:45 20120612_inc2_8fndcto0_1_1.bkp
-rw-r----- 1 oracle oinstall 11927552 Jun 12 23:45 20120612_inc2_8gndctp3_1_1.bkp
-rw-r----- 1 oracle oinstall 6656 Jun 12 23:45 20120612_inc2_8hndctp6_1_1.bkp
-rw-r--r-- 1 root root 0 Jun 13 09:48 inotify
-rw-r--r-- 1 root root 0 Jun 13 09:48 rsync
5.查看日志
服務端日志
[root@nxbak]# tail -f /var/log/rsyncd.log
2012/06/12 23:46:07 [1633] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
2012/06/12 23:46:07 [1633] name lookup failed for 192.168.1.118: Temporary failure in name resolution
2012/06/12 23:46:07 [1633] connect from UNKNOWN (192.168.1.118)
2012/06/12 23:46:07 [1633] rsync to nxbak from oracle@unknown (192.168.1.118)
2012/06/12 23:46:07 [1633] sent 69 bytes received 589 bytes total size 1239517788
2012/06/12 23:46:07 [1635] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
2012/06/12 23:46:07 [1635] name lookup failed for 192.168.1.118: Temporary failure in name resolution
2012/06/12 23:46:07 [1635] connect from UNKNOWN (192.168.1.118)
2012/06/12 23:46:07 [1635] rsync to nxbak from oracle@unknown (192.168.1.118)
2012/06/12 23:46:07 [1635] sent 69 bytes received 589 bytes total size 1239517788
2012/06/13 09:49:06 [5342] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
2012/06/13 09:49:06 [5342] name lookup failed for 192.168.1.118: Temporary failure in name resolution
2012/06/13 09:49:06 [5342] connect from UNKNOWN (192.168.1.118)
2012/06/13 09:49:06 [5342] rsync to nxbak from oracle@unknown (192.168.1.118)
2012/06/13 09:49:06 [5342] rmanbak/
2012/06/13 09:49:06 [5342] sent 69 bytes received 675 bytes total size 1239517788
2012/06/13 09:49:12 [5344] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
2012/06/13 09:49:12 [5344] name lookup failed for 192.168.1.118: Temporary failure in name resolution
2012/06/13 09:49:12 [5344] connect from UNKNOWN (192.168.1.118)
2012/06/13 09:49:12 [5344] rsync to nxbak from oracle@unknown (192.168.1.118)
2012/06/13 09:49:12 [5344] rmanbak/
2012/06/13 09:49:12 [5344] sent 69 bytes received 729 bytes total size 1239517788
客戶端日志
[root@wxbak]tail -f /var/log/rsync.log
sent 505 bytes received 16 bytes 1042.00 bytes/sec
total size is 1239517788 speedup is 2379112.84
building file list ...
16 files to consider
rmanbak/
rmanbak/rsync
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/16)
sent 591 bytes received 44 bytes 1270.00 bytes/sec
total size is 1239517788 speedup is 1951996.52
building file list ...
17 files to consider
rmanbak/
rmanbak/inotify
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1/17)
sent 645 bytes received 44 bytes 1378.00 bytes/sec
total size is 1239517788 speedup is 1799009.85
異常
在配置rsync時,出現一個新問題,提示mkdir failed: Permission denied (13)和mkstemp failed: Permission,可能是開啟了SE
Linux導致的,因對SELinux的權限控制不熟悉,關閉SELinux,rsync即可以正常同步文件、文件夾。
rsync client log
sending incremental file list
scripts/checkalert.sh
1288 100% 0.00kB/s 0:00:00 (xfer#1, to-check=39/41)
scripts/checkbak.sh
1275 100% 1.22MB/s 0:00:00 (xfer#2, to-check=38/41)
scripts/cleaner.sh
257 100% 250.98kB/s 0:00:00 (xfer#3, to-check=37/41)
scripts/dailyduty.sh
1773 100% 1.69MB/s 0:00:00 (xfer#4, to-check=36/41)
scripts/full.rman
263 100% 256.84kB/s 0:00:00 (xfer#5, to-check=35/41)
scripts/historycleaner.sh
1721 100% 1.64MB/s 0:00:00 (xfer#6, to-check=34/41)
scripts/inc0.rman
287 100% 280.27kB/s 0:00:00 (xfer#7, to-check=33/41)
scripts/inc1.rman
275 100% 268.55kB/s 0:00:00 (xfer#8, to-check=32/41)
scripts/inc2.rman
274 100% 267.58kB/s 0:00:00 (xfer#9, to-check=31/41)
scripts/inotify
0 100% 0.00kB/s 0:00:00 (xfer#10, to-check=30/41)
scripts/obsolete.rman
192 100% 187.50kB/s 0:00:00 (xfer#11, to-check=29/41)
scripts/rman.sh
1256 100% 1.20MB/s 0:00:00 (xfer#12, to-check=28/41)
scripts/rsync.sh
844 100% 824.22kB/s 0:00:00 (xfer#13, to-check=27/41)
scripts/sql/
rsync: recv_generator: mkdir "scripts/sql" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.checkalert.sh.J5S0do" (in oa_fs) failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
rsync: mkstemp "scripts/.checkbak.sh.evfA21" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.cleaner.sh.L6ccRF" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.dailyduty.sh.cShQFj" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.full.rman.tn4vuX" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.historycleaner.sh.O2mdjB" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.inc0.rman.xLgW7e" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.inc1.rman.kDyGWS" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.inc2.rman.BBHsLw" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.inotify.w68fAa" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.obsolete.rman.ZAO4oO" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.rman.sh.KkEVds" (in oa_fs) failed: Permission denied (13)
rsync: mkstemp "scripts/.rsync.sh.hp2Q25" (in oa_fs) failed: Permission denied (13)
sent 6010 bytes received 260 bytes 12540.00 bytes/sec
total size is 20476 speedup is 3.27
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
rsync server log
2013/03/28 20:14:58 [12524] connect from oa.egolife.com (172.31.1.90)
2013/03/28 20:14:58 [12524] rsync to oa_fs/ from [email protected] (172.31.1.90)
2013/03/28 20:14:58 [12524] receiving file list
2013/03/28 20:14:58 [12524] rsync: recv_generator: mkdir "scripts/sql" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] *** Skipping any contents from this failed directory ***
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.checkalert.sh.vOJStU" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.checkbak.sh.kpYRTQ" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.cleaner.sh.LwyTjN" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.dailyduty.sh.2ZJWJJ" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.full.rman.f3w29F" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.historycleaner.sh.K1tbAC" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.inc0.rman.lGzm0y" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.inc1.rman.2cSzqv" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.inc2.rman.VFAOQr" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.obsolete.rman.4WV6go" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.rman.sh.phPqHk" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] rsync: mkstemp "scripts/.rsync.sh.kslM7g" (in oa_fs) failed: Permission denied (13)
2013/03/28 20:14:58 [12524] sent 1546 bytes received 6003 bytes total size 20476
via:http://www.dylanninin.com/blog/2013/03/rsync-and-inotify-config-and-test.html