当前位置: 首页 > 工具软件 > sersync > 使用案例 >

sersync-实时同步服务

董花蜂
2023-12-01

1.实时同步服务原理

a.需要部署好rsync守护进程服务,实现数据传输
b.需要部署好inotify服务,实现目录中数据监控
c.将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输
 

2.实时同步服务部署

1)部署rsync守护进程

服务端配置操作
客户端配置操作
 

2)部署inotify监控服务

第一个步骤:安装inotify-tools软件

yum -y install inotify-tools

第二个步骤:熟悉命令的使用

/usr/bin/inotifywait       ---监控目录数据信息变化
/usr/bin/inotifywatch      ---对监控的变化信息进行统计(修改次数、删除次数)

inotifywait命令使用方法:

inotifywait [参数] 监控的目录
-m|--monitor      ----实现一直监控目录
-r|--recursive    ----进行递归监控
-q|--quiet        ----尽量减少信息的输出
--format          ----指定输出信息的格式
--timefmt         ----指定输出的时间信息格式
-e|--event        ----指定监控的事件信息

创建文件监控信息输出:

/backup/ CREATE root.txt               --一个文件被创建
/backup/ OPEN root.txt                 --打开创建的文件
/backup/ ATTRIB root.txt               --修改文件的属性信息
/backup/ CLOSE_WRITE,CLOSE root.txt    --保存关闭一个文件

删除文件监控信息输出:

/data/DELETE root.txt

修改文件监控信息输出:

/backup/ CREATE root.txt
/backup/ OPEN root.txt
/backup/ MODIFY root.txt
/backup/ CLOSE_WRITE,CLOSE root.txt

sed命令修改文件原理:

/backup/ OPEN 1.txt                 --打开文件
/backup/ CREATE sedDSF8R2           --创建出一个临时文件(内存)
/backup/ OPEN sedDSF8R2             --临时文件进行打开
/backup/ ACCESS 1.txt               --读取源文件内容
/backup/ MODIFY sedDSF8R2           --修改临时文件
/backup/ ATTRIB sedDSF8R2           --临时文件属性变化
/backup/ CLOSE_NOWRITE,CLOSE 1.txt  --不编辑直接关闭源文件
/backup/ CLOSE_WRITE,CLOSE sedDSF8R2--写入关闭临时文件
/backup/ MOVED_FROM sedDSF8R2       --将临时文件移除
/backup/ MOVED_TO 1.txt             --移入一个新的1.txt源文件

inotify监控命令最终格式:

inotifywait -mrq --timefmt "%F" --format "%T %w %f 事件信息:%e" /data -e 【CREAT】

监控的事件:

create --创建  delete --删除 moved_to --移入 close_write --修改

企业应用:防止系统重要文件被破坏

需要用到inotify进行实时一直监控/etc/passwd,/var/spool/cron/root

3)部署sersync同步服务

第一个历程:需要下载安装软件

GitHub - wsgzao/sersync: rsync+inotify-tools

先创建一个/server/tools目录

rz -y (上传LInux服务器)

第二个历程:解压软件压缩包

tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86/sersync2 /usr/local/

第三个历程:编写配置文件

  vim conf/confxml.xml
  6     <filter start="false">
  7         <exclude expression="(.*)\.svn"></exclude>
  8         <exclude expression="(.*)\.gz"></exclude>
  9         <exclude expression="^info/*"></exclude>
 10         <exclude expression="^static/*"></exclude>
 11     </filter>
说明:排除指定数据信息不要进行实时传输同步
 filter=过滤   exclude=排除
 12     <inotify>
 13         <delete start="true"/>
 14         <createFolder start="true"/>
 15         <createFile start="false"/>
 16         <closeWrite start="true"/>
 17         <moveFrom start="true"/>
 18         <moveTo start="true"/>
 19         <attrib start="false"/>
 20         <modify start="false"/>
 21     </inotify>
说明:定义inotify程序需要监控的事件
24         <localpath watch="/data">                            #源服务器同步目录 
25             <remote ip="172.16.1.41" name="backup"/>         #目标服务器IP地址,和目标服务器rsync同步目录模块名称
26             <!--<remote ip="192.168.8.39" name="tongbu"/>--> #目标服务器ip,每行一个
27             <!--<remote ip="192.168.8.40" name="tongbu"/>--> #目标服务器ip,每行一个
28         </localpath>
29         <rsync>
30             <commonParams params="-az"/>
31             <auth start="true" users="rsync_backup"  #目标服务器rsync同步用户名
               passwordfile="/etc/rsync.passwd"/>       #目标服务器rsync同步用户的密码在源服务器的存放路径
32             <userDefinedPort start="true" port="874"/><!-- port=874 --> #设置rsync远程服务端口号

第四个历程:启动sersync服务程序

chmod a+x sersync	 
export PATH="$PATH:/usr/local/sersync/bin"

sersync -h(查看命令参数)
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
           进行同步测试
参数-o:指定配置文件,默认使用confxml.xml文件
-o /usr/local/sersync/conf/confxml.xml
-o /usr/local/sersync/conf/confxml02.xml

启动sersync实时同步服务命令:

sersync -dro /usr/local/sersync/conf/confxml

根据自己实际部署情况而定,我的启动命令如下:

/usr/local/sersync2 -dro /server/tools/GNU-Linux-x86/confxml.xml

停止sersync进程:

killall sersync
yum -y install psmisc(若没有需安装)

开机自动启动:

/etc/rc.local <--sersync -dro /usr/local/sersync/conf/confxml

3.实时同步服务概念总结

1)实现实时同步的原理
   监控目录数据变化         --inotify
   将数据进行传输             --rsync
   将监控和传输进行整合  --sersync
2)实现实时同步部署方法
   1.部署rsync守护进程
   2.部署inotify软件
   3.部署sersync软件

 类似资料: