最近看到xoyo开发sersync同步数据还不错,所以在此做下笔记。
之前的时候同步数据用的是inotify+rsync,以下是inotify+rsync的一个脚本。
#!/bin/bash
SRC=\'#\'" /var/tmp/src/"
DST="/var/tmp/dst/"
HOST="127.0.0.1"
/usr/bin/inotifywait -mrq --timefmt '%Y%m%d%H%M%S' --format '%T%w%f %e' -e modify,delete,create,attrib ${SRC} | while read TIME FIL
E_CHANGED EVNET
do
rsync -av --delete --progress --partial ${SRC} ${DST} && echo "Directory ${SRC} was rsynced"
echo "------------------------------------------------------------------"
done
个人认为sersync 还不错,以下是sersync的介绍,详细请参照http://code.google.com/p/sersync/
sersync的优点:
1. sersync是使用
c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
2. 相比较上面两个项 目,
sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
3. 另 外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
4. 本项目有出错处 理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每
10个小时对同步失败的文件重新同步。
5. 本项目自带
crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
获取sersync源码
wget http://sersync.googlecode.com/files/sersync2.4_32bit_binary.tar.gz
wget http://sersync.googlecode.com/files/sersync2.4_64bit_binary.tar.gz
下面是自己配置一个实例
1、修改sersync服务
环境:192.168.1.15 sersync服务
192.168.1.14 rsync服务
?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.2">
<host hostip="192.168.1.15" port="8008"></host>
<filter start="false">
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
</filter>
<sersync>
<localpath watch="/data/www.test.com" debug="false">
<remote ip="192.168.1.14" name="tongbu"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
</localpath>
//密码验证
<rsyncauth start="flase" users="www" passwordfile="/etc/rsync.pas"/>
//设置整体同步时间
<crontab start="false" schedule="600">
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
//刷cdn
<plugin start="false" name="refreshCDN"/>
</sersync>
<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
<sendurl base="http://pic.xoyo.com/cms"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
<plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
</head>
2、14上的rsync配置
uid = root
gid = root
use chroot = yes
max connections = 20
syslog facility = local5
pid file = /var/run/rsyncd.pid
[tongbu]
path=/data/www.test.com
uid=root
comment=test
ignore errors=yes
read only=no
hosts allow=192.168.1.15
hosts deny=*
启动rsync服务
rsync --daemon --config=/etc/rsyncd.conf
启动sersync服务
本文出自 “二号” 博客,谢绝转载!