[[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
[[email protected] ~]# yum install inotify-tools -y
[[email protected] ~]# rpm -qa inotify-tools
inotify-tools-3.14-1.el6.x86_64
[[email protected] ~]# ll /proc/sys/fs/inotify/(查看该目录有下面三个文件代表系统支持inotify,Linux内核版本为2.6.13开始支持inotify)
总用量 0
-rw-r--r-- 1 root root 0 2015-11-12 18:21 max_queued_events
-rw-r--r-- 1 root root 0 2015-11-12 18:21 max_user_instances
-rw-r--r-- 1 root root 0 2015-11-12 18:21 max_user_watches
[[email protected] ~]# /usr/bin/inotifywait --help
inotifywait 3.14
Wait for a particular event on a file or set of files.
Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
Options:
-h|--help Show this help text.
@<file> Exclude the specified file from being watched.
--exclude <pattern>
Exclude all events on files matching the
extended regular expression <pattern>.
--excludei <pattern>
Like --exclude but case insensitive.(排除文件或目录时,不区分大小写)
-m|--monitor Keep listening for events forever. Without
this option, inotifywait will exit after one
event is received.(始终保持事件监听状态)
-d|--daemon Same as --monitor, except run in the background
logging events to a file specified by --outfile.
Implies --syslog.
-r|--recursive Watch directories recursively.(递归查询目录)
--fromfile <file>
Read files to watch from <file> or `-‘ for stdin.
-o|--outfile <file>
Print events to <file> rather than stdout.
-s|--syslog Send errors to syslog rather than stderr.
-q|--quiet Print less (only print events).(打印很少的信息,仅仅打印监控事件的信息)
-qq Print nothing (not even events).
--format <fmt> Print using a specified printf-like format
string; read the man page for more details.(打印使用指定的输出类似格式字符串)
--timefmt <fmt> strftime-compatible format string for use with
%T in --format string.(指定时间输出的格式)
-c|--csv Print events in CSV format.
-t|--timeout <seconds>
When listening for a single event, time out after
waiting for an event for <seconds> seconds.
If <seconds> is 0, inotifywait will never time out.
-e|--event <event1> [ -e|--event <event2> ... ]
Listen for specific event(s). If omitted, all events are
listened for.(通过此参数可以指定需要监控的事件)
Exit status:
0 - An event you asked to watch for was received.
1 - An event you did not ask to watch for was received
(usually delete_self or unmount), or some error occurred.
2 - The --timeout option was given and no events occurred
in the specified interval of time.
Events:
access file or directory contents were read(文件或目录被读取)
modify file or directory contents were written(文件或目录内容被修改)
attrib file or directory attributes changed(文件或目录属性被改变)
close_write file or directory closed, after being opened in
writeable mode
close_nowrite file or directory closed, after being opened in
read-only mode
close file or directory closed, regardless of read/write mode(文件或目录封闭,无论读/写模式)
open file or directory opened(文件或目录被打开)
moved_to file or directory moved to watched directory(文件或目录被移动至另外一个目录)
moved_from file or directory moved from watched directory
move file or directory moved to or from watched directory(文件或目录被移动另一个目录或从另一个目录移动至当前目录)
create file or directory created within watched directory(文件或目录被创建在当前目录)
delete file or directory deleted within watched directory(文件或目录被删除)
delete_self file or directory was deleted
unmount file system containing file or directory unmounted(文件系统被卸载)
[[email protected] ~]# mkdir /server/scripts -p(建立脚本目录)
[[email protected] ~]# cd /server/scripts
[[email protected] scripts]# vim inotify.sh
#!/bin/bash
inotify=/usr/bin/inotifywait
$inotify -mrq --format ‘%w%f‘ -e create,close_write,delete /data \(-mrq保持监控,递归,静默;-e对哪些事件监控,create增,close_write改,delete删)
|while read file
do
cd / &&
rsync -az ./data --delete [email protected]::backup \(推送,注意--delete参数为完全覆盖,慎用!)
--password-file=/etc/rsync.password
done
~
~
~
~
~
~
~
~
~
~
~
~
"inotify.sh" 9L, 242C 已写入
[[email protected] scripts]# vim /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don‘t
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/etc/init.d/rpcbind start
/etc/init.d/nfs start
/bin/sh /server/scripts/inotify.sh &(放入开机自启动,&为后台运行)
~
~
~
~
~
~
~
~
~
~
~
"/etc/rc.local" 10L, 305C 已写入