分类: LINUX
2009-11-26 17:05:17
inotify+rsync实现触发式文件同步
一般我们把rsync放在crontab里进行定时文件同步,同步的延时有可能会比我们想象的长。这里你可以使用inotify来对文件进行监控,实现触发式同步。
在安装inotify-tools前请先确认你的linux内核是否打到了2.6.13,并且在编译时开启了CONFIG_INOTIFY选项。你可以按下面的方式简单的确认这一点:ls /proc/sys/fs/inotify,如果支持的话会有 max_queued_events,max_user_instances,max_user_watches三项。
原理:使用inotify监视文件的变化,如果文件有变动,那么启动rsync,这里可以做其他引申,也可以使用该软件监视某些固定的目录,如果被监视的目录有变动,那么执行相关的指定程序,比如发mail,报警等
缺点:此方式只适合rsync推送方式,而不是适合rsync获取方式
系统环境:Centos5 [ 2.6.18-128.1.6.el5PAE]
软件环境:
rsync-3.0.4
inotify-tools.i386-3.13-1.el5.rf(inotify-tools-3.13.tar.gz)
下载地址:
将H1主机中的/data/wwwroot/system.91monitor.cn/webroot数据,上传同步至H2主机的/backup/目录。——当源数据有文件或目录更新时,即时启动rsync同步进程同步。
一、目标主机H2
1、安装rsync(这里略过)
2、配置rsync
vi /etc/rsyncd.conf
内容:
uid = nobody
gid = nobody
use chroot = no
strict modes = no
max connections = 5
charset=utf8
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
##add by auto script 090519####
[rsynctest]
path=/backup
comment = rsynctest
read only = yes
ignore errors
dont compress = *.gz *.tgz *.zip *.z *.bz2 *.tbz
3、建立备份目录
mkdir /backup
chown nobody.nobody /backup
二、源主机H1
1、安装rsync客户端(略)
2、安装inotify-tools
a)使用yum方式安装,centos默认源无此包,可以使用rpmforge源
yum install inotify-tools.i386
b)使用编译方式安装,下载包地址上面已提供
cd /usr/local/src
tar zxvf inotify-tools-3.13.tar.gz
./configure
make
make install
3、编写触发脚本
vi /root/ndserver/rsynctest.sh
内容:
#!/bin/sh
SRC=/data/wwwroot/system.91monitor.cn/webroot
#DST=/dir 远程rsync模块下的目录
INWT=/usr/bin/inotifywait
#编译安装的话注意修改这里的路径
RSYNC=/usr/bin/rsync
$INWT -mrq -e create,move,delete,modify $SRC | while read D E F ; do
$RSYNC –times –delete -r –ignore-errors –force $SRC nobody@192.168.1.12::rsynctest
done
4、授权执行权限
chmod o+x /root/ndserver/rsynctest.sh
5、执行
/root/ndserver/rsynctest.sh &
6、加入到启动中
echo “/root/ndserver/rsynctest.sh &” >> /etc/rc.local
三、测试同步
在源主机H1上,在/data/wwwroot/system.91monitor.cn/webroot目录中修改内容(如增、删、改文件,添加、移除目录等),
——同时在目标主机H2上,观察备份目录/backup中内容的变化
另:搜集大量小文件的实时同步方案:
http://blog.daviesliu.net/2008/04/24/sync/