2020-01-14综合架构的实时同步服务

inotifywait语法结构:
inotifywait 参数 事件 监控目录
exclude排除指定数据信息不要进行监控(区分大小写识别信息)
excludei排除指定数据信息不要进行监控(忽略大小写识别信息)
-m 保持永久监控
-d 类似-m参数
-r 监控目录中子目录数据变化
-o输出一些信息到某些目录中
将无用信息进行输出
-q输出少量信息(只输出事件信息)
-qq连事件都不打印
指定输出信息格式--format "%e %w %f"
%e显示触发事件信息
%w显示监控目录信息
%f触发事件数据信息
--timefmt "%F %T"
定义显示的时间格式信息(时间格式的定义和date命令类似)
-e指定监视的事件信息
-c --csv格式用逗号进行分割数据
事件信息:inotify采用触发机制进行监控关注******的
access文件或目录被读取时会触发监控机制
modify文件或目录被写入时候会触发
attrib文件属性信息被改动会触发
close_write文件或目录关闭,写入新的信息之后********
close_nowrite文件或目录关闭,只读模式进行关闭
close文件或目录关闭,无论文件数据是否进行读或写
open文件或目录被打开了
moved_to 文件或目录移动到监控目录中
moved_from文件或目录从监控目录移除
move文件或数据不管是从目录中移除或是移入**********
delete文件或目录被删除 **********
create文件或目录被创建出来在监控目录中***********
利用脚本实现实时同步
编写脚本思路:
发现变化数据信息 inotifywait
inotifywait -mrp --formant "%w%f"/data -e "close_write,move,create,delete" 数据信息
将变化数据进行传输 rsync
rsync -az 数据信息 rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
监控操作和同步操作建立联系
shell脚本循环语句:
for 循环语句 ---有限循环
while 循环语句 无限循环
条件为真就会一直循环
until 循环语句 无限循环
条件为假就会一直执行
脚 本解释过程:
inotifywait -mrq --format "%w%f" /data -e "close_write,move,create,delete"|while read data_info
/data/oldboy02.txt data_info=变量赋值01
/data/oldboy03.txt data_info=变量赋值02
/data/oldboy04.txt data_info=变量赋值03
do
rsync -az /data/ --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
done

脚本内容:

cat /server/scripts/sync_data.sh

   #!/bin/bash
   
   inotifywait -mrq --format "%w%f" /data -e "close_write,move,create,delete"|while read data_info
   do
      rsync -az  /data/ --delete  rsync_backup@172.16.1.41::backup  --password-file=/etc/rsync.password 
   done

利用软件实现实时同步过程:
sersync 实时同步软件 部署前提(inotify-tools rsync守护进程模式)
sersync软件部署过程:
第一个历程:下载软件二进制包
https://github.com/wsgzao/sersync

第二个历程:解压软件,并保存到相应目录中
cd /server/tools
unzip sersync-master.zip
cd sersync-master/
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
tree GNU-Linux-x86/
mkdir /usr/local/sersync
mv GNU-Linux-x86/* /usr/local/sersync/

第三个历程:修改sersync配置文件
vim 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>

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>

24         <localpath watch="/opt/tongbu">    --- 实现实时同步配置
25             <remote ip="127.0.0.1" name="tongbu1"/>
26             <!--<remote ip="
192.168.8.39" name="tongbu"/>-->
27             <!--<remote ip="
 192.168.8.40" name="tongbu"/>-->
28         </localpath>
29         <rsync>
30             <commonParams params="-artuz"/>
31             <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
32             <userDefinedPort start="false" port="874"/><!-- port=874 -->
33             <timeout start="false" time="100"/><!-- timeout=100 -->
34             <ssh start="false"/>
35         </rsync>

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

参数-d: 启用守护进程模式
参数-r: 在监控前,将监控目录与远程主机用rsync命令推送一遍
参数-o: 指定配置文件,默认使用confxml.xml文件 此时存放(/opt/sersync/confxml.xml)

sersync -dro /usr/local/sersync/confxml.xml

实时同步服务出现异常:
修改配置文件参数,进行调试
<debug start="true"/>

===========================================
Linux系统软件安装方法:
1) yum安装软件方式
2) rpm安装软件方式
3) 编译安装软件方式
4) 二进制包安装软件
===========================================

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容