inotify+rsync的初步配置

inotify的简单配置 
Linux内核从2.6.13开始,引入了inotify机制。通过intofity机制,能够对文件系统的变化进行监控,如对文件进行创建、删除、修改等操作,可以及时通知应用程序进行相关事件的处理。这种响应处理机制,避免了频繁的文件轮询任务,提高了任务的处理效率。
一、查看inotify默认参数
sysctl -a|grep -e max_queued_events -e max_user_watches -e max_user_instances
二、修改inotify参数
1、命令修改sysctl -w xxx
2、文件修改

vim /etc/sysctl.conf #添加如下代码,数据按实际情况设置,此处为默认值

fs.inotify.max_user_instances = 128

fs.inotify.max_user_watches = 8192

fs.inotify.max_queued_events = 16384

fs.epoll.max_user_watches = 199864

3、参数说明 

max_user_instances:每个用户创建inotify实例最大值

max_queued_events:inotify队列最大长度,如果值太小,会出现错误,导致监控文件不准确

max_user_watches:要知道同步的文件包含的目录数,可以用 find /data/ -type d|wc -l 统计,必须保证参数值大于统计结果。
三、创建实时监控脚本。
/usr/bin/inotifywait -mrq --timefmt '%Y/%m/%d-%H:%M:%S' --format '%T %w %f' 
-e modify,delete,create,move,attrib /data/ 
 1 #!/bin/bash
 2 
 3 inotify=/usr/bin/inotifywait
 4 
 5 $inotify -mrq --timefmt '%Y/%m/%d-%H:%M:%S' --format '%T %w %f' -e create,close_write,delete /data/ | while read file
 6 
 7 do
 8 
 9   cd /data/ &&
10 
11   rsync -az ./ --delete flyme@192.168.1.237::backup --password-file=/etc/rsync.pass wd
12 
13 done

inotifywait常用参数:    

  1. --timefmt 时间格式    %y年 %m月 %d日 %H小时 %M分钟    
  2. --format 输出格式      %T时间 %w路径 %f文件名 
  3. -m 始终保持监听状态,默认触发事件即退出。    
  4. -r 递归查询目录    
  5. -q 打印出监控事件    

-e 定义监控的事件,可用参数:    

  1. open 打开文件    
  2. access 访问文件    
  3. modify 修改文件    
  4. delete 删除文件    
  5. create 新建文件    
  6. attrb  属性变更