rsync+inotify实现实时同步

 admin   2022-07-12 16:39   191 人阅读  0 条评论

rsync实时同步

rsync是不支持实时同步的,通常我们借助于inotify这个软件来实时监控文件变化,一旦inotify监控到文件变,则立即调用rsync进行同步。

1、安装inotify(装在客户端)
[root@web01 ~]# yum -y install inotify-tools

2、inotify参数介绍
-m 持续监控
-r 递归
-q 静默,仅打印时间信息
--timefmt 指定输出时间格式
--format 指定事件输出格式
    %Xe 事件
    %w 目录
    %f 文件
-e 指定监控的事件
    access 访问
    modify 内容修改
    attrib 属性修改
    close_write 修改真实文件内容
    open 打开
    create 创建
    delete 删除
    umount 卸载
    
3、开始监控
[root@m01 ~]# /usr/bin/inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write  /root

4、实时监控并同步
[root@m01 ~]# /usr/bin/inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write  /var/www/html | while read line;do rsync -avzP --delete root@172.16.1.41/var/www/html

inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write  /var/www/html | while read line;do rsync -avrzP --delete /var/www/html/ root@9.57.18.22:/var/www/html;done

5、inotify常用参数

-m --始终保持监听状态,默认触发事件即退出

-r --递归查询目录

-q --打印出监控事件

-e --定义监控的事件,可用参数: access --访问文件 modify --修改文件 attrib --属性变更 open --打开文件 delete --删除文件 create --新建文件 move --文件移动

--fromfile --从文件读取需要监视的文件或者排除的文件,一个文件一行,排除的文件以@开头

--timefmt --时间格式

--format --输出格式

--exclude --正则匹配需要排除的文件,大小写敏感

--excludei --正则匹配需要排除的文件,忽略大小写

%y%m%d %H%M --年月日时钟 %T%w%f%e --时间路径文件名状态


检测源目录中是否有如下动作:modify,create,move,delete,attrib;一旦发生则发布至目标机器;方式为 ssh

src: 192.168.22.11(Rsync + Inotify-tools) dest: 192.168.22.12

两台机器需要做好 ssh 免密登录

# mdkir /data/test/dest/ --dest机器

# mdkir /data/test/src/ --src机器

# rsync -av --delete /data/test/src/ 192.168.22.12:/data/test/dest --测试下命令

# vim /data/test/test.sh

#!/bin/bash

/usr/bin/inotifywait -mrq -e modify,create,move,delete,attrib /data/test/src | while read events

do

rsync -a --delete /data/test/src/ 192.168.22.12:/data/test/dest

echo "`date +'%F %T'` 出现事件:$events" >> /tmp/rsync.log 2>&1

done

# chmod 755 /data/test/test.sh

# /data/test/test.sh &

# echo '/data/test/test.sh &' >> /etc/rc.local --设置开机自启,把/data/test/test.sh换成你的脚本路径

图片.png

图片.png

*******我们可以在目标机上也写一个这样的脚本: rsync -a --delete /data/test/dest/ 192.168.22.11:/data/test/src ;这样可以实现双向同步


本文地址:https://liuchunjie.top/?id=392
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?