inotify监控&sersync实时同步服务

介绍部分

rsync结合crond最快一分钟同步一次
1)实现实时同步数据的原理
2)实时实时同步数据的方法
a 部署好rsync守护进程服务
b 部署好inotify监控服务
c 部署好sersync实时同步服务
3)实现实时同步数据的验证

实时同步服务原理/概念
1)需要部署好rsync守护进程服务,实现数据传输
2)需要部署好inotify服务,实现目录中数据变化监控
3)将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输

实时同步服务部署

  • 1)部署rsync守护进程
    服务端配置操作
    客户端配置操作
  • 2)部署inotify监控服务

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

  第二个步骤:熟悉命令的使用
/usr/bin/inotifywait(主要) --- 监控目录数据信息变化
/usr/bin/inotifywatch --- 对监控的变化信息进行统计

inotifywait命令使用方法:

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

监控信息输出

  • 创建文件监控信息输出

    
    ]# inotifywait /backup/ -m
    
    /data/ CREATE user13     --- 一个文件被创建
    /data/ OPEN user13       --- 打开创建的文件
    /data/ ATTRIB user13     --- 修改文件的属性信息
    /data/ CLOSE_WRITE,CLOSE user13  --- 保存关闭一个文件

删除文件监控信息输出
/data/ DELETE user13

修改文件监控信息输出
/data/ CREATE user10
/data/ OPEN user10
/data/ MODIFY user10
/data/ CLOSE_WRITE,CLOSE user10


*       sed命令修改文件逻辑:

       /data/ OPEN user10          --- 打开文件
       /data/ CREATE sedpSAFR7     --- 创建出一个临时文件(内存)
       /data/ OPEN sedpSAFR7       --- 临时文件进行打开
       /data/ ACCESS user10        --- 读取源文件内容
       /data/ MODIFY sedpSAFR7     --- 修改临时文件
       /data/ ATTRIB sedpSAFR7     --- 临时文件属性变化
       /data/ CLOSE_NOWRITE,CLOSE user10   --- 不编辑直接关闭源文件
       /data/ CLOSE_WRITE,CLOSE sedpSAFR7  --- 写入关闭临时文件
       /data/ MOVED_FROM sedpSAFR7 --- 将临时文件移除
       /data/ MOVED_TO user10      --- 移入一个新的user10源文件
    
### inotify监控命令格式:
inotifywait -mrq --timefmt "%F" --format "%T %w %f 事件信息:%e" /data -e CREATE

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


### 企业应用:防止系统重要文件被破坏
 需要用到inotify进行实时一直监控(输出到日志文件里) /etc passwd  /var/spool/cron/root


## 部署sersync同步服务
* 第一个里程:需要下载,保留上传到linux服务器中 https://github.com/wsgzao/sersync 上传linux服务器 rz -y --- 选择需要上传的数据信息 PS:软件尽量都统一保存在/server/tools目录中
* 第二个里程:解压软件压缩包,将解压的数据进行保存

unzip sersync_installdir_64bit.zip
[root@nfs01 tools]# tree sersync_installdir_64bit
sersync_installdir_64bit
└── sersync
├── bin --- sersync软件命令目录
│?? └── sersync
├── conf --- sersync软件配置目录
│?? └── confxml.xml
└── logs --- sersync软件日志目录
[root@nfs01 tools]# mv sersync_installdir_64bit/sersync/ /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>
说明:排除指定数据信息不要进行实时传输同步

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="/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 -->

![](https://note.youdao.com/yws/public/resource/2f0e2bf95320d2701f9c895f3057e30e/xmlnote/9A09D5A029AF4BF5B014C0222958C4D0/3389)

* 第四个里程:启动sersync服务程序

[root@nfs01 bin]# export PATH="$PATH:/usr/local/sersync/bin"
[root@nfs01 bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/bin
或者做个软链接
]# ln -s /usr/local/sersync-master/sersync2/sersync2 /usr/local/bin/sersync

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

sersync -dro /usr/local/sersync/conf/confxml.xml 启动实时同步服务
yum install -y psmisc
killall sersync 停止实时同步服务
/etc/rc.local <<-- sersync -dro /usr/local/sersync/conf/confxml.xml 开机自动启动



# 实时同步服务概念总结
*    1) 实现实时同步的原理
       监控目录数据变化  --- inotify 
       将数据进行传输    --- rsync
       将监控和传输进行整合  --- sersync
       
* 2) 实现实时同步部署方法 1. 部署rsync守护进程 2. 部署inotify软件 3. 部署sersync软件(调用上面俩)
服务器技术交流群请加微信 YJZyjz