配置inotify+rsync实时同步

对rsync服务及命令不熟悉的,可以参考博文通过rsync实现远程同步
这里就不多说了!

Linux内核从2.6.13版本开始就已经提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便的实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

将inotify机制与rsync工具相结合,可以实现出发时备份(实时同步)——只要原始位置的文档发生变化,则立即启动增量备份,否则处于静默等待状态,如图所示:

这样,就避免了按固定周期备份时存在的延迟性、周期过密问题!

正是因为inotify通知机制由Linux内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

实验所需的软件包inotify-tools-3.14.tar.gz网盘链接:https://pan.baidu.com/s/1Ov006-6MV76VMVWL1LFyAA
提取码:np88

配置inotify+rsync实时同步大致分为4步:
(1)调整inotify内核参数;
(2)安装inotify-tools软件包;
(3)编写触发式同步脚本;
(4)测试实验效果。

本次要基于上篇博客的实验环境:通过rsync实现远程同步

下面依次介绍并配置(以下操作均在服务器B执行!):

(1)调整inotify内核参数

在Linux内核中,默认的inotify机制提供了三个调控参数:
(1)max_queue_events:监控队列大小(操作事件);
(2)max_user_instances:最多监控实例数(监控目录);
(3)max_user_watches:每个实例最多监控文件数。

[[email protected] ~]# cat /proc/sys/fs/inotify/max_queued_events
16384
[[email protected] ~]# cat /proc/sys/fs/inotify/max_user_instances
128
[[email protected] ~]# cat /proc/sys/fs/inotify/max_user_watches
8192
//系统的默认值,如果有需要可以自行修改!
[[email protected] ~]# vim /etc/sysctl.conf
                     …………                //省略部分注释内容
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[[email protected] ~]# sysctl -p
//立即生效

通常情况下,监控所设的值建议大于监控目标的总文件数!

(2)安装inotify-tools软件包

inotify-tools软件包可以从inotify-tools官网下载,也可以通过文章开头网盘链接进行下载。
在客户端安装:

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

安装完成inotify—tools工具之后,会产生两条命令:
inotifywait:用于持续监控,实时输出结果;
inotifywatch:用于短期监控,任务完成后再出结果。

命令所使用的参数有:
-m,持续进行监控
-r,递归监控所有子对象
-q,简化输出信息
-e,指定要监控哪些事件类型

关于命令的详细用法可以参考其man手册!

以监控网站根目录为例:

[[email protected] ~]# inotifywait -mrq -e modify,move,create,delete,attrib /var/www/html
//以递归、持续监控整个目录的修改、移动、创建、删除、属性变更等各种事件

(3)编写触发式同步脚本

在客户端编写脚本:

[[email protected] ~]# vim 123.sh
#!/bin/bash
A="inotifywait -mrq -e modify,move,create,delete /var/www/html"
B="rsync -azH --password-file=/root/123.pass /var/www/html/* [email protected]::wwwroot"
$A | while read DIRECTORY EVENT FILE
do
        if
                [ $(pgrep rsync | wc -l) -le 0 ]
        then
                $B
        fi
done
[[email protected] ~]# chmod 777 123.sh
[[email protected] ~]# vim /etc/rc.d/rc.local
             …………         //省略部分内容,编写以下内容
/root/123.sh &
[[email protected] ~]# chmod 777 /etc/rc.d/rc.local
//        /etc/rc.d/rc.local这个文件中主要存放一些开机自启动的脚本

(4)测试实验效果

重新启动客户端进行测试看看是否可以将内容同步到服务器端!

[[email protected] ~]# pgrep 123.sh         //查看脚本开机是否已经自动运行
1033
1039
//表示脚本的进程号

在客户机上创建文件进行测试:

[[email protected] ~]# touch /var/www/html/666

在服务端进行验证!

[[email protected] ~]# ls /var/www/html
666

服务端已经自动同步!实验完成!

原文地址:https://blog.51cto.com/14157628/2429904

时间: 2024-10-12 20:55:53

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

centos 7配置inotify+rsync实时同步

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

配置 inotify+rsync 实时同步

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

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