Inotify+Rsync实时复制项目实践

1.Inotify介绍

Inotify是一种异步的系统事件监控机制。它可以监控文件系统删除、修改、移动等事件。

Inotify-tools是一个监控指定目录数据实时变化的软件。

Sersync是利用Inotify和Rsync技术实现的更优的数据实时监控解决方案。

2.环境准备

Inotify-tools和Sersync都是依赖rsync服务运行。

backup服务器:安装rsync并以daemon的方式启动服务。参考文章:rsync配置

数据服务器:安装rsync、Inotify-tools或者Sersync。

3.数据服务器安装Inotify-tools

[root@Ansible ~]# ll /proc/sys/fs/inotify/         #查看系统是否支持,支持内核版本2.16.13以上的系统
total 0
-rw-r--r--. 1 root root 0 Mar 2 21:42 max_queued_events #inotify事件队列可容纳的事件数量
-rw-r--r--. 1 root root 0 Mar 2 18:56 max_user_instances #每个用户可以运行inotify的进程数
-rw-r--r--. 1 root root 0 Mar 2 21:42 max_user_watches #inotify可以监控文件的数量

[root@Ansible ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@Ansible ~]# yum install inotify-tools -y
[root@Ansible ~]# rpm -ql inotify-tools|head -2 #查看配置文件路径
/usr/bin/inotifywait #监控文件系统事件命令
/usr/bin/inotifywatch #收集文件系统事件发生的次数
[root@Ansible ~]# inotifywait -h #查看参数与事件

4.测试

测试create事件
[root@Ansible ~]# inotifywait -mrq --timefmt '%y-%m-%d %H:%M ' --format '%T%w%f' -e create /root/data
20-03-02 22:28 /root/data/text.txt #开启另外一个ssh连接,在/root/data下创建文件text.txt,事件会在此显示。

参数解释:
-m:保持监听状态。
-r:递归监控目录文件变化。
-q:只打印事件信息。
--timefmt:事件输出事件格式。
--format:打印使用指定的输出类似格式字符串。%T:20-03-02 22:28,%w:/root/data/,%f:text.txt
-e:指定事件,不指定则为默认所有事件。
/root/data:监控目录。
-o:可将事件输出到文件。
-d:后台运行。

[root@Ansible ~]# inotifywatch -r -t 10 -e create /root/data #统计10秒内事件数量
Establishing watches...
Finished establishing watches, now collecting statistics.
total create filename
1 1 /root/data/

5.编写同步脚本

[root@Ansible ~]# cat inotifywatch.sh
#!/bin/bash
cmd="/usr/bin/inotifywait"
$cmd -mrq --timefmt '%y-%m-%d %H:%M ' --format '%T%w%f' -e create /root/data|\
while read line
do
cd /root/data && \
rsync -avz --delete ./ backup@192.168.244.139::test --password-file=/etc/rsyncd.passwd
done

6.让脚本后台运行并加入开启启动

[root@Ansible ~]# /bin/sh /root/inotifywatch.sh >/dev/null 2>&1 &
[root@Ansible ~]# echo "/bin/sh /root/inotifywatch.sh >/dev/null 2>&1 &" /etc/rc.local

 

 


「 文章如果对你有帮助,请点个赞哦^^ 」 

0

这篇文章有一条评论

评论关闭。