分享、学习、提高
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中指定的目录要存在才行。
发表评论
表情
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写