Rsync+Sersync的实时c/s 模式同步
书接上回,https://blog.csdn.net/alwaysbefine/article/details/108948231(这是上一个博客的拓展,连着看才可以懂哦),服务器端的搭建是实现该架构的基础,具体的rsync服务器搭建看上面的链接。sersync是安装在客户端的哦,不要搞混淆了(本次内容结合上一篇博客看)。
其实,sersync并不能算是完全实时,其原因为sersync必须先检测本地目录和文件后,才开始执行rsync同步,而检测是手动执行的,后面会讲到具体的原因。
sersync是基于inotify开发的,类似于inotify-tools的工具
由于,sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录 ,因此,rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。
说人话,sersync比inotify效率要高,原因是只同步发生变化的文件或者目录,而inotify并不是。大数据量时请使用sersync(几百个G或者上t,这样的算数据量大)。
书接上回,在192.168.0.16这台机器上安装sersync
1、下载sersync
在google code下载sersync的可执行文件版本,里面有配置文件与可执行文件
wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz(有时下载失败,所有要本地留存才行)
2.解压文件到 /usr/local/src/
tar -zxf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv mv GNU-Linux-x86 /usr/local/src/sersync
解压出来的文件就两个
[root@localhost sersync]# pwd
/usr/local/src/sersync
[root@localhost sersync]# ls -al
total 1772
drwxr-xr-x. 2 root root 41 Oct 7 14:18 .
drwxr-xr-x. 3 root root 21 Oct 7 14:09 ..
-rwxr-xr-x. 1 root root 2226 Oct 7 14:12 confxml.xml
-rwxr-xr-x. 1 root root 1810128 Oct 26 2011 sersync2
3.链接可执行文件 sersync2 到 /usr/local/bin/
ln -s /usr/local/src/sersync/sersync2 /usr/local/bin/
4.编辑 confxml.xml文件
修改24--28行
<sersync>
<localpath watch="/var/log/httpd"> #本地同步目录
<remote ip="192.168.0.17" name="httpd_back"/> #rsync服务器192.168.0.17上的模块名称
修改31--34行,认证部分【rsync密码认证】
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="rsync" passwordfile="/etc/rsync.passwd"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
5.写任意一个脚本,内容如下:
#!/bin/bash
#! author zsk_john
sersync2 -dr -o /usr/local/src/sersync/confxml.xml
6.执行它!!!如下输出即为正确。
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /var/log/httpd && rsync -artuz -R --delete ./ rsync@192.168.0.17::httpd_back --password-file=/etc/rsync.passwd >/dev/null 2>&1
run the sersync:
watch path is: /var/log/httpd
7.验证
访问192.168.0.16的httpd服务,
curl 192.168.0.16 这个命令多执行几次,刷一些日志记录,执行第六步所创建的脚本,在192.168.0.17的 /mnt/httpd_back/access.log文件内,可以看到日志记录。(192.168.0.17不安装httpd哦!!)
每次需要同步的时候,执行脚本即可。