男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述使用sersync实现实时数据同步相关的知识,希望能为你提供帮助。
一、概述sersync类似于inotify,同样用于监控,但它克服了inotify的缺点.sersync不仅可以实现实时同步,另外还自带crontab功能,只需在xml配置文件中开启,即也可以按要求隔一段时间整体同步一次,而无需再额外配置crontab功能。
二、实现sersync下载地址: https://code.google.com/archive/p/sersync/downloads
文件服务器端配置:将sersync文件上传至文件服务器上解压,并移动到/usr/local下
tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86 /usr/local/sersync
配置环境变量
echo \'PATH=/usr/local/sersync:$PATH\' >
/etc/profile.d/sersync.sh
source /etc/profile.d/sersync.sh
后面的操作都要依赖于rsync,需要确保文件服务器上已经安装rsync工具
配置连接密码文件
echo 123456 >
/etc/rsync.pas
chmod 600/etc/rsync.pas
sersync样例配置文件
[root@localhost www]# cat /usr/local/sersync/confxml.xml
<
?xml version="1.0" encoding="ISO-8859-1"?>
<
head version="2.5">
<
host hostip="localhost" port="8008">
<
/host>
<
debug start="false"/>
<
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="false"/>
<
/inotify>
<
sersync>
<
localpath watch="/www">
<
!-- 监控目录 -->
<
remote ip="192.168.22.98" name="backup"/>
<
!-- rsync服务器的ip和目录 -->
<
!--<
remote ip="192.168.8.39" name="tongbu"/>
-->
<
!--<
remote ip="192.168.8.40" name="tongbu"/>
-->
<
/localpath>
<
rsync>
<
commonParams params="-artuz"/>
<
auth start="true" users="rsyncuser" passwordfile="/etc/rsync.pas"/>
<
!-- 上面认证用户开关和密码文件配置信息 -->
<
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>
<
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/images"/>
<
/localpath>
<
/plugin>
<
/head>
备份服务器端配置:安装rsync-daemon工具来生成service文件
文章图片
配置文件
[root@localhost ~]# cat /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode# See rsyncd.conf man page for more options.# configuration example: uid = root
gid = root
# use chroot = yes
max connections = 0
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes
timeout = 900
reverse lookup = no
[backup]
path = /data/backup
comment = backup dir
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pas
创建服务端密码文件
echo \'rsyncuser:123456\' >
/etc/rsync.pas
chmod 600 /etc/rsync.pas
文件服务器确认与备份服务器连接正常
文章图片
测试同步数据
[root@localhost sersync]# rsync -avz --delete --password-file=/etc/rsync.pas /www/ rsyncuser@192.168.22.98::backup
使用sersync后台同步
sersync2 -dro /usr/local/sersync/confxml.xml
PS:sersync可以支持多实例运行,只需要分配指定配置文件
开机启动可以定义在/etc/rc.local文件中,别忘记改执行权限。
验证sersync的执行效果
文章图片
三、总结【使用sersync实现实时数据同步】通过以上可以基本实现文件服务器的实时同步。
推荐阅读
- 博客迁移
- 修改后的父主题CSS,如何将这些更改推送到子主题()
- 激活wordpress Divi子主题时缺少字体
- 使用Bootstrap 4在桌面屏幕右侧的菜单
- 菜单按钮不起作用(wordpress主题)
- Mamp和WordPress URL更改
- 我文件夹下文件中的恶意代码。只想知道他在做什么
- 为我的主题制作更新通知功能
- 对(index)进行CSS更改()