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