NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

这里主要是说inotify的实时同步和sersync的实时同步数据。两者都是实时同步的软件,大家可以比较一下他们有什么不一样。

貌似inotify的缺点就是一个进程最多200个并发。然后对于中小公司要求不高的服务器已经足够了,至于watch  events参数可调整为1000000。

inotify的安装 。这个软件一般安装在客户端,而不是安装在rsync上。

首先要测试rsync同步是否有问题?

先下载inotify-tools-3.14.tar.gz  这个软件

移动到指定的目录  mv inotify-tools-3.14.tar.gz  /tools

解压  tar zxf inotify-tools-3.14.tar.gz

进入目录  cd inotify-tools-3.14

配置安装 ./configure --prefix=/usr/local/inotify-tools-3.14

编译和安装   make && make install

检查安装结果  echo $?

建立一个软链接,方便使用  ln -s /usr/local/inotify-tools-3.14/   /usr/local/inotify-tools

 测试效果  /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,close_write,delete /data

这里我们监测 创建,修改,删除

然后我们测试一下rsync服务,rsync服务前面有讲,这里就一带而过了。

rsync -avz /data rsync_backup@192.168.3.107::backup --password-file=/etc/rsync.password

这是把NFS  /data 的数据推送到rsync的backup目录里

然后就是写一个shell脚本,这个脚本就可以实现监测,并且实时同步。

#!/bin/=/usr/local/inotify-tools/bin/-mrq --format  -e create,close_write,delete /| read /data &&-avz /data --delete rsync_backup@.::backup --password-=/etc/>/dev/ >&

 

把这个脚本添加到rc.local开机启动。

这里加了&是为了在后台运行,可以通过jobs -l 查看是否运行。

NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

 

 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

然后sersync这个软件好像更简单,不需要写脚本

首先是下载和安装。

sersync2.5.4_64bit_binary _stable_final.tar.gz 下载这个软件

然后解压到相应的目录下。

NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

 

 NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

 

 然后就是去调整confxml.xml的参数啦

我目前只调整了这几个参数,测试是成功的。

NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

 

 这里有关于这个配置文件的详细注释。

<?xml version="1.0" encoding="ISO-8859-1"?><head version="2.5"><!--本地主机地址--><host hostip="10.2.22.27" port="8008"></host><!--是否打开调试信息--><debug start="false"/><!--是否支持xfs文件系统--><fileSystem xfs="false"/><!--是否过滤,是否排除名称中含有制定字符串的文件的同步--><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="true"/><modify start="true"/></inotify>

 <sersync><!--本地需要监视的目录--><localpath watch="/data/sersync/"><!--目的段IP地址和rsync同步子项的服务名--><remote ip="10.2.22.27" name="sersync_test"/><!--理论上如果有多个目的端,可在此逐个列出,最好启用新实例,每个实例配置一个地址和服务名--><!--<remote ip="192.168.8.39" name="tongbu"/>--><!--<remote ip="192.168.8.40" name="tongbu"/>--></localpath><rsync><!--sersync调用rsync时的参数配置段--><commonParams params="-artuz"/><auth start="false" users="root" passwordfile="/etc/rsync.pas"/><userDefinedPort start="false" port="874"/><!-- port=874 --><timeout start="false" time="100"/><!-- timeout=100 --><ssh start="false"/></rsync><!--指定如果同步失败,记录到哪个文件,以便在60分钟后尝试重传--><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>

 <plugin name="command"><!--扩展插件功能的配置举例--><param prefix="/bin/sh" suffix="" ignoreError="true"/>  <!--prefix /opt/tongbu/mmm.sh suffix--><filter start="false"><include expression="(.*)\.php"/><include expression="(.*)\.sh"/></filter></plugin>

 <plugin name="socket"><!--扩展插件功能的配置举例--><localpath watch="/opt/tongbu"><deshost ip="192.168.138.20" port="8009"/></localpath></plugin><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/p_w_picpaths"/></localpath></plugin></head>

然后就是测试了。

/usr/local/sersync/bin/sersync2  -r -n 8 -o /usr/local/sersync/conf/confxml.xml

没有加-d代表前台运行,可以直观的看见效果。

因为要推送到rsync的backup1的目录了。

所以要在rsync的服务器添加多一个模块。

NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

 

 并赋予用户权限。

参照这个。

NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

 

 最后把sersync这个服务加入开机启动rc.local里。就可以了。

NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

 

 这里面加入-d是为了后台运行,方便使用。

 NFS上的数据通过inotify或者sersync软件实时同步数据到rsync服务器上

 

 

看来sersync的功能还是优于inotify

上一篇:TLPI读书笔记第19章-监控文件事件


下一篇:rsync+inotify远程同步部署实验(图文详解)