文章来源:王琦的个人博客-数据同步之rsync | 第3篇:sersync+rsync ,互联网打杂,喜欢多语言编程,记录一些知识碎片,分享一些心得。
前一篇写了inotify+rsync进行实时同步,但是还有些不足。
- 只能记录下被监听的目录发生了变化,没有记录具体到某个文件和目录。
- rsync在同步时候,每次都是对整个目录同步,文件多时比较耗时。
sersync是基于inotify开发的。可以具体到某一个文件或者目录的名字,只同步发生变化的文件或目录,因此效率会比前者高很多。
sersync下载地址:https://github.com/wsgzao/sersync
sersync配置文件说明
1、监控相关信息
# 过滤不用的信息
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
# 监控时间信息
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="false"/>
<modify start="false"/>
</inotify>
2、数据配置相关信息
<sersync>
<!--指定监控目录-->
<localpath watch="/opt/tongbu">
<!--指定备份服务器地址和模块信息-->
<remote ip="172.16.1.41" name="backup"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<!--指定rsync推送时的命令-->
<commonParams params="-az"/>
<!--认证用户和密码文件-->
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
启动
./sersync -dro /usr/local/sersync/conf/confxml.xml