Inotify+Rsync实现linux文件实时同步(3)
注:要取得监控文件发生的事件,在--format处指定%e参数,同时,使用--event参数来指定要监控的事件即可,如--format '%T %w%f %e' --event modify,delete,create,attrib
说明:当文件系统发现指定目录下有如上的条件的时候就触发相应的指令,是一种主动告之的而非我用循环比较目录下的文件的异动,该程序在运行时,更改目录内的文件时系统内核会发送一个信号,这个信号会触发运行rsync命令,这时会同步源目录和目标目录。
--timefmt:指定输出时的输出格式
--format: '%T %w%f'指定输出的格式,上面的输出类似于:12/10/08 06:34 /opt/webmail/dovecot-1.1.2/src/test/1
小脚本,同步到多台主机:
inotify_rsync.tar.gz
大小:
1KB
下载:
下载
更改后,更简单,适用于同步到相同的目录,监控多目录,多文件,同步到多台服务器
#set -x
#var
src="/usr/local/nginx/html/lib /usr/local/nginx/html/www /usr/local/nginx/html/var/www.work.com.conf.php"
des_ip="172.18.1.35 172.18.1.36 172.18.1.37 172.18.1.38"
#function
inotify_fun ()
{
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' \
-e modify,delete,create,move $1|while read time file
do
for ip in $des_ip
do
echo "`date +%Y%m%d-%T`: rsync -avzq --delete --progress $1 $ip:`dirname $1`"
rsync -avzq --delete --progress $1 $ip:`dirname $1`
echo
done
done
}
#main
for a in $src
do
inotify_fun $a &
done
参考:http://www.ibm.com/developerworks/cn/linux/l-ubuntu-inotify/index.html
- 上一篇:让secureCRT正确显示中文
- 下一篇:lsyncd+rsync实现实时自动同步