龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 操作系统 > LINUX系统 >

Inotify+Rsync实现linux文件实时同步(3)

时间:2014-05-31 15:21来源:网络整理 作者:网络 点击:
分享到:
注:要取得监控文件发生的事件,在--format处指定%e参数,同时,使用--event参数来指定要监控的事件即可,如--format '%T %w%f %e' --event modify,delete,create,attrib

  注:要取得监控文件发生的事件,在--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
下载:
下载

  更改后,更简单,适用于同步到相同的目录,监控多目录,多文件,同步到多台服务器

#!/bin/sh
#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


 

精彩图集

赞助商链接