准备工作
一台装 sersync、一台装 rsync 服务
sersync 服务器(数据源,源机器):192.168.1.63
rsync 客户端(备份端,目标机器):192.168.1.64
rsync+inotify-tools 与 rsync+sersync 架构的区别
rsync+inotify-tools
inotify 只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录
发生了变化记录下来。
rsync 在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,
当数据量很大时,整个目录同步非常耗时(rsync 要对整个目录遍历查找对比文件),因此效率很低。
rsync+sersync
sersync 可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字。
rsync 在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很
小,rsync 在遍历查找对比文件时,速度很快),因此效率很高。
同步过程和原理:
1.用户实时的往 sersync 服务器上写入更新文件数据。
2.此时需要在同步主服务器上配置 sersync 服务。
3.在另一台服务器开启 rsync 守护进程服务,以同步拉取来自 sersync 服务器上的数据。
4.在另一台服务器开启 rsync 守护进程服务,使 sersync push 文件过来。
通过 rsync 的守护进程服务后可以发现,实际上 sersync 就是监控本地的数据写入或更新事件,然
后,在调用 rsync 客户端的命令,将写入或更新事件对应的文件通过 rsync 推送到目标服务器,如图
下载 sersync
1.在 google code 下载 sersync 的可执行文件版本,里面有配置文件与可执行文件
wget \https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz
有时下载失败,所有要本地留存一份
2.上传到服务器 /opt 目录下。
[root@xuegod63 ~]# cd /opt #切换工作目录到/opt 目录下。
[root@xuegod63 opt]# tar xvf ./sersync2.5.4_64bit_binary_stable_final.tar.gz #解压。
[root@xuegod63 opt]# mv ./GNU-Linux-x86 ./sersync #解压后的文件重命名为sersync。
配置 sersync
[root@xuegod63 opt]# cd sersync #切换工作目录至 sersync 目录下。
[root@xuegod63 sersync]# cp confxml.xml confxml.xml.bak
备份配置文件,便于二次修改
1.更改优化 sersync 配置文件:
[root@xuegod63 sersync]# vim confxml.xml #修改配置文件中的 24--28 行,如下所
示。
<sersync>
<localpath watch="/var/www/html"> #本地同步数据目录。
<remote ip="192.168.1.64" name="wwwroot"/> #rsync 模块名称.
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="rsyncuser" passwordfile="/etc/rsync.passwd"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
#修改 31--34 行,认证部分(rsync 密码认证)。
2.开启 sersync 守护进程同步数据。
[root@xuegod63 sersync]# /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
图:开启 sersync 守护进程
测试
在 63 /var/www/html/ 目录 增加、删除、或改目录文件。
看 64 /web-back 目录的变化
[root@xuegod64 web-back]# watch ls -l
设置 sersync 监控开机自动执行
[root@xuegod63 sersync]# vi /etc/rc.d/rc.local #编辑 rc.local 文件,在最后添加一
行。
/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml #设置开机自动运行脚本。
[root@xuegod63 sersync]# chmod 755 /etc/rc.d/rc.local #添加执行权限。
添加脚本监控 sersync 是否正常运行
[root@xuegod63 ~]# vi /opt/check_sersync.sh #编辑脚本,添加以下代码。
#!/bin/sh
sersync="/opt/sersync/sersync2"
confxml="/opt/sersync/confxml.xml"
status=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l)
if [ $status -eq 0 ];
then
$sersync -d -r -o $confxml &
else
exit 0;
fi
[root@xuegod63 ~]# chmod +x /opt /check_sersync.sh
#添加脚本执行权限,把这个脚本加到任务计划,定期执行检测。
到此rsync+sersync 实现数据实时同步已完成
这是小编多年工作经验总结出来的经验,希望可以帮助到大家,大家要是想看更多技术文章可以去公众号【学神来啦】!每天都会更新技术干货,为你源源不断的提供知识。