linux inotify +Rsync 事实监控 目录状态

安装Inotify-tools工具

1、查看服务器内核是否支持inotify

ll /proc/sys/fs/inotify #列出文件目录,出现下面的内容,说明服务器内核支持inotify

-rw-r--r-- 1 root root 0 Mar 7 02:17 max_queued_events

-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_instances

-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_watches

2 下载安装 inotify

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

tar -zxvf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14.tar.gz

./configure --prefix=/usr/local/inotify #指定存放目录

make

make install

3 修改inotify 参数

3.1 命令修改

sysctl -w fs.inotify.max_user_instances=130

3.2 文件修改

vi /etc/sysctl.conf

fs.inotify.max_user_instances=130

4 参数说明

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

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

max_user_watches:要知道同步的文件包含的目录数,可以用: find /home/www/lj -type d|wc -l 统计,必须保证参数值大于统计结果(/home/www/lj为同步文件目录)。

5 创建实时监控脚本

mkdir -p /opt/scripts

cd /opt/scripts

vi inotify_start.sh

*************

#!/bin/bash

/usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete \

--fromfile '/opt/scripts/ffile' \

--timefmt '%y-%m-%d %H:%M:%S' --format '%T %w %f %e' \

--outfile '/tmp/rsync.log'

***************

inotifywait常用参数:

--fromfile 是从哪里读取要监控的文件路径

--timefmt 时间格式

%y年 %m月 %d日 %H小时 %M分钟 %S 秒

--format 输出格式

%T时间 %w路径 %f文件名 %e状态

--outfile 输出的文件路径

-m 始终保持监听状态,默认触发事件即退出。

-r 递归查询目录

-q 打印出监控事件

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

open 打开文件

access 访问文件

modify 修改文件

delete 删除文件

create 新建文件

attrb  属性变更

vi /opt/scripts/ffile

/home/www/lj/

@/home/www/lj/exclude/

其中@标示开头的表示 这个路径是不记录的。

试着去在 /home/www/lj 下新建 删除或者修改一些文件 就会记录下来

记录的内容会在 /tmp/rsync.log

如果是搭配 rsync 那么把ffile里面路径

改成 相应模块的里的path

【lj】

path = /home/www/lj

如果有排除的在执行rsync命令时候 添加参数

--exclude-from '/opt/scripts/ex.lst'

rsync -azvp --port=873 --password-file=/etc/rsync.passwd --exclude-from '/opt/scripts/ex.lst' /home/www/jl/* root@127.0.0.1::lj

注意 ex.lst 里面要写相对路径(相对于src :/home/www/jl/ 而言)

如果想排除  /home/www/jl/exclude 文件夹

ex.list 里面就这么写 后面不要加 / 或者空格

exclude

这样就能 完成了 rsync+inotify 配置了。

注意:排除在外某个文件夹不同步 有两种做法

第一:在inotify 这不配置 在rsync 里配置

第二:在inotify 和rsync 里都配置

没有以下这种情况 在inotify里配置排除了 在rsync里不配置排除 这样是不其作用的。会根据 第一种配置方式走的。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注