inotify-tools

Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。

安装前查看内核版本以及确认内核是否支持

[root@192 ~]# uname -r
3.10.0-1160.el7.x86_64

[root@192 ~]#  ll /proc/sys/fs/inotify
total 0
-rw-r--r--. 1 root root 0 May 23 12:08 max_queued_events
-rw-r--r--. 1 root root 0 May 23 12:08 max_user_instances
-rw-r--r--. 1 root root 0 May 23 12:08 max_user_watches

max_queued_events 是 Inotify 管理的队列的最大长度,文件系统变化越频繁,这个值就应该越大!如果使用时:

[root@192 ~]# inotifywait -mrq -e modify,delete,create,attrib  /
Failed to watch /; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches'.

说明max_queued_events太小需要调整参数后再次使用

[root@192 ~]# echo 10000000 > /proc/sys/fs/inotify/max_user_watches

inotify-tools指令:
inotifywait 用于等待文件或文件集上的一个特定事件,它可以监控任何文件和目录
inotifywatch 用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息

inotifywait:

-m ,--monitor 表示始终保持事件监听状态
-r ,--recursive 表示递归查询目录
-q 即--quiet,表示不打印监控事件(最开始的提示信息)
-e 即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等

-e:

access   文件读取

modify   文件更改。

attrib     文件属性更改,如权限,时间戳等。

close_write以可写模式打开的文件被关闭,不代表此文件一定已经写入数据。

close_nowrite以只读模式打开的文件被关闭。

close     文件被关闭,不管它是如何打开的。

open     文件打开。

moved_to一个文件或目录移动到监听的目录,即使是在同一目录内移动,此事件也触发。

moved_from一个文件或目录移出监听的目录,即使是在同一目录内移动,此事件也触发。

move包括moved_to和 moved_from

move_self文件或目录被移除,之后不再监听此文件或目录。

create     文件或目录创建

delete    文件或目录删除

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /var/www/html/

--format '%T %w%f'将以“文件类型 完整路径/文件名”的格式输出结果。

inotifywait -mrq --timefmt "%y-%m-%d %T"   --format "%T  %w%f 当前事件有:%e"  -e close_write,delete /var/

inotify+rsync实现实时同步:

inotifywait -mrq --timefmt "%y-%m-%d %T"   --format "%T  %w%f 当前事件有:%e"  -e close_write,delete /var/ |

while read line

do

     rsync -za --delete /var/ root@192.168.1.251:/var/

done & > /etc/null &


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值