Rsync+Sersync的实时cs 模式同步

    科技2024-06-03  71

                     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 sersync23.链接可执行文件 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哦!!)

    每次需要同步的时候,执行脚本即可。

     

     

     

     

    Processed: 0.010, SQL: 8