配置 inotify+rsync 实时同步

rsync 虽然可以实现快速备份,但是什么东西都不可能是十全十美的,作为计划任务备份,都是固定时间进行的,而且延迟明显、实时性差,当同步源长期不变化时,密集的定期任务是不必要的。
实时备份就不同了,一旦同步源出现变化,立即启动备份,只要同步源无变化,则不执行备份,但是他只能实现上传功能。
Linux内核提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这个机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

将inotify机制和rsync工具相结合,可以实现触发式备份(实时同步)——只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静默状态,这样,避免了周期性备份时存在的延迟性、周期过密等问题。

在Linux内核中,默认的inotify机制提供了三个调控参数:

[[email protected] myweb]# cat /proc/sys/fs/inotify/max_queued_events
16384                   #监控事件队列数
[[email protected] myweb]# cat /proc/sys/fs/inotify/max_user_instances
128                       #最多监控实例数
[[email protected] myweb]# cat /proc/sys/fs/inotify/max_user_watches
8192                      #每个实例最多监控文件数

当要监控的目录、文件数量较多或者变化比较频繁时,建议通过修改“ /etc/sysctl.conf ”加大这三个参数(标准是1024的倍数):

[[email protected] myweb]# vim /etc/sysctl.conf
                 ..............................
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

[[email protected] myweb]# sysctl -p              #更新并查看该参数是否生效
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

接下来的操作接着上一篇配置rsync服务器的环境,以及配置,上一篇博文链接:
https://blog.51cto.com/14227204/2431539
现在所有的操作是基于server B(192.168.1.2)这台服务器的:

1、安装inotify-tools:
获取源码包:
https://pan.baidu.com/s/1_xSEDdXiRhd9lDOzVTbm4w
提取码: s3rj

解包并安装:


[[email protected] media]# tar zxf inotify-tools-3.14.tar.gz -C /usr/src
[[email protected] media]# cd /usr/src/inotify-tools-3.14/
[[email protected] inotify-tools-3.14]# ./configure && make && make install

2、安装后即可使用,现在以监控server B上的/var/www/html目录:

[[email protected] /]# inotifywait -mrq -e modify,create,move,attrib,delete /var/www/html
该命令的具体选项解释如下:

-e:指定要监控哪些事件;
-m:表示持续监控;
-r:表示递归整个目录;
-q:简化输出信息;
modify:修改;
create:创建;
move:移动;
delete:删除;
attrib:属性更改;

现在切换一个终端,在监控的目录下新建一个1.html文件,则该终端的监控命令下就会提示相关信息,提示如下::

[[email protected] /]# inotifywait -mrq -e modify,create,move,attrib,delete /var/www/html
/var/www/html/ CREATE 1.html
/var/www/html/ ATTRIB 1.html

3、现在可以编写一个脚本来实现实时同步:

[[email protected] /]# vim /opt/inotify_sync.sh

#!/bin/bash
inotify_cmd="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
rsync_cmd="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/* [email protected]::wwwroot"
$inotify_cmd | while read DIRECTORY EVENT FILE
do
        $rsync_cmd
done

[[email protected] /]# chmod +x /opt/inotify_sync.sh
[[email protected] /]# echo ‘/opt/inotify_sync.sh &‘ >> /etc/rc.d/rc.local            #设置开机自动运行该脚本
[[email protected] /]#chmod a+x /etc/rc.d/rc.local
[[email protected] /]#init 6
[[email protected] /]#pgrep inotify_sync.sh         #重启后,可以使用此命令查看脚本是否在运行,如果在运行,会显示其进程号
1033
1099

验证该脚本是否生效的过程如下:

在本机 server B上运行/opt/inotify_rsync.sh脚本程序。
切换到本机的/var/www/html/目录,执行增加、删除、修改文件等操作。
查看server A服务器中/var/www/html/目录下的变化情况。
注意事项:

记得测试下脚本是否有编写错误,可手动执行下脚本,测试是否生效,若有报错信息,可将脚本里的命令复制出来,执行一下,看命令是否有错误,并且注意两台服务器的目录相关权限问题,如是否可读可写等。
rsync服务器上的配置项须设置为 read only = no。

原文地址:https://blog.51cto.com/14227204/2431670

时间: 2024-08-28 22:13:20

配置 inotify+rsync 实时同步的相关文章

配置inotify+rsync实时同步

对rsync服务及命令不熟悉的,可以参考博文通过rsync实现远程同步这里就不多说了! Linux内核从2.6.13版本开始就已经提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动.修改等.利用这一机制,可以非常方便的实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应. 将inotify机制与rsync工具相结合,可以实现出发时备份(实时同步)--只要原始位置的文档发生变化,则立即启动增量备份,否则处于静默等待状态,如图所示:这样,就避免了按固定周期

centos 7配置inotify+rsync实时同步

Linux内核提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动.修改等.利用这个机制,可以非常方便地实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应. 将inotify机制和rsync工具相结合,可以实现触发式备份(实时同步)--只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静默状态,这样,避免了周期性备份时存在的延迟性.周期过密等问题. 在Linux内核中,默认的inotify机制提供了三个调控参数: [[email protec

Inotify+rsync实时同步工具实战

Inotify+rsync实时同步工具实战 分别有机器:server-178/24,client-b-179/24,client-c-180/24 中心分发服务器Master:client-c-180/24 备份服务器    :client-b-179/24和server-178/24 基于备份服务器已经提供rsync --daemon的基础上,在中心分发服务器(rsync客户端)配置inotify,监控的目录设置为/www/ 1.查看当前系统是否支持inotify ls -l /proc/sy

inotify +rsync 实时同步

1.1 inotify简介 inotify是一种强大的,细粒度的,异步的文件系统时间监控机制,Linux内核从2.6.13加入了inotify支持,通过inotify可以监控文件系统汇中添加,删除,修改,移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正式实施这样的监控的软件,国人周洋在金山公司开发了类似的实时同步软件sersync. 1.1.1 安装inotify 在安装inotify-tools前请先确认你的Linux内核是否达

真正的inotify+rsync实时同步 彻底告别同步慢

我们公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题.但当web文件越来越多(百万级数量html,jpg等小 文件),同步就越来越慢,根本做不到实时,按照网上的调优方法都尝试过,问题根本没有解决.经过我一翻细致研究,终于把慢的核心问题研究明白,先总结一句 inotifywait响应不会有延迟,rsync也很快.大家同样有慢的烦恼,那是因为网上的inotify+rsync的教程都是坑.下面我们来分 析. inotifywait 单独分析 /usr/local/bin/

inotify+rsync实时同步 彻底告别同步慢

#!/bin/bash src=/data/            # 需要同步的源路径 des=data              # 目标服务器上 rsync --daemon 发布的名称,rsync --daemon这里就不做介绍了,网上搜一下,比较简单. rsync_passwd_file=/etc/rsyncd.passwd            # rsync验证的密码文件 ip1=192.168.0.18      # 目标服务器1 ip2=192.168.0.19      #

inotify+rsync实时同步【优化版本-转发】

#!/bin/bash src=/data/ # 需要同步的源路径 des=data # 目标服务器上 rsync --daemon 发布的名称,rsync --daemon这里就不做介绍了,网上搜一下,比较简单. rsync_passwd_file=/etc/rsyncd.passwd # rsync验证的密码文件 ip1=192.168.0.18 # 目标服务器1 ip2=192.168.0.19 # 目标服务器2 user=root # rsync --daemon定义的验证用户名 cd

inotify+rsync实时同步

server部署:#!/bin/baash rpm -qa inotify-tools && yum -y install inotify-tools inotifywait -mrq /data --format '%w%f' -e create,delete,close_write,moved_to|\while read linedo rsync -az --delete /data/ [email protected]::backup --password-file=/etc/rs

Inotify+Rsync实时同步文件

一.网络拓补图: 原文地址:http://blog.51cto.com/hbgslz/2064576