2011/03/10 21:11
文章作者:Enjoy 转载请注明原文链接。
Sersync 是金山的周洋开发的一款基于 inotify + rsync 的大量文件的多服务器自动同步程序。Sersync 使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
地址:http://code.google.com/p/sersync/
以下是一个月前安装试用时记录下来的,目前使用的一直很稳定。
1.下载二进制版本解压
wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz
tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz
GNU-Linux-x86/
GNU-Linux-x86/sersync2
GNU-Linux-x86/confxml.xml
mv GNU-Linux-x86/* /usr/bin/
这样就可以用任意目录使用sersync2了,配置文件就是confxml.xml。
2.vi /usr/bin/confxml.xml
<localpath watch="/www/www.9enjoy.com">
<remote ip="192.168.1.23" name="hx"/>
</localpath>
3.配置目标服务器,vi /etc/rsyncd.conf
uid = www
gid = www
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[hx]
path=/www/www.9enjoy.com
ignore errors = yes
read only =no
hosts allow = 192.168.1.21
开启rsyncd,rsync --daemon
[hx]这个和xml文件里的name对应。
第一次运行sersync2 -r进行完整同步,命令其实是运行:
/usr/bin/rsync -artuz -R /www/www.9enjoy.com 192.168.1.22::hx
如果目录内容太多,可能会造成负荷比较大,也可以手工执行rsync或scp分目录移动。
然后运行./sersync -d,就好了,正常的话就会自动同步了。
附:
[root@cncn_web1 ~]# /usr/bin/rsync -artuz -R --delete ./ 192.168.1.24::hx
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
网上搜索到的解决方法是:
SELinux;
setsebool -P rsync_disable_trans on
但其实SELinux都没开启,肯定不是这个原因。
查看本地的/var/log/rsyncd.log没有发现错误信息。
查看远程的tail /var/log/rsyncd.log发现错误,原来是目录不存在,/etc/rsyncd.conf中指定的目录要存在才行。