一、inotify使用方式
在生产中有一种需求是,当目录下的文件数据发生变化时,就将数据备份到备份服务器上。实现这样的需求需要做到以下三点:
- inotify 对同步数据目录信息的监控
- rsync 完成对数据的同步
- 利用脚本进行结合
inotify:
异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件
实现inotify软件:
inotify-tools,sersync,lrsyncd
我们这里使用inotify-tools
1.1、inotify内核参数
ll /proc/sys/fs/inotify #列出下面的文件,说明服务器内核支持inotify
-rw-r--r-- 1 root root 0 Dec 7 10:10 max_queued_events
-rw-r--r-- 1 root root 0 Dec 7 10:10 max_user_instances
-rw-r--r-- 1 root root 0 Dec 6 05:54 max_user_watches
参数说明:参看man 7 inotify
max_queued_events:inotify事件队列最大长度,如值太小会出现 Event Queue Overflow 错误,默认值:16384
max_user_watches:可以监视的文件数量(单进程),默认值:8192
max_user_instances:每个用户创建inotify实例最大值,默认值:128
1.2、安装inotify
yum install epel-release -y
yum install inotify-tools -y
1.3、inotify-tools包主要文件
- inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,常用于实时同步的目录监控
- inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计
1.4、inotifywait命令常见选项
-m, --monitor # 始终保持事件监听
-d, --daemon # 以守护进程方式执行,和-m相似,配合-o使用
-r, --recursive # 递归监控目录数据信息变化
-q, --quiet