rsync+inotify的使用注意事项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync+inotify的使用注意事项相关的知识,希望对你有一定的参考价值。

   rsync+inotify是一个比较常用的实时同步解决方案,但是它并不是在所有的场景中都适用的,rsync+inotify比较适用的是在10台以下的一些小规模web集群中实时同步,不过在使用rsync+inotify解决方案和日常使用rsync不同,在rsync+inotify中rsync服务端需要部署多个而客户端只有一个,在rsync的客户端上做为日常内容发布的服务器从而由它把数据推送至各个各个rsync的服务端上。其中用来监控文件系统变化的工具是inotify-tools,在rsync的客户端上安装了inotify-tools后指定需要监控的文件路径,在被监控路径下文件发生变化后就可以根据相关的信息用来触发rsync来做文件推送。在Linux下支持inotify的内核最小为2.6.13,可以使用uname -r可以查看,现在Centos5以上都是是支持的都是在2.6.18以上的所以一般来说内核都是支持的。安装也很简单,在配置好epel的源后可以通过yum进行安装:yum -y install inotify-tools,在安装好后会有2个二进制文件分别是inotifywait和inotifywatch,其中用于监控文件变化的就是inotifywait,而inotifywait所使用的参数选项也很简单:

-m是要持续监视变化。 
-r使用递归形式监视目录。 
-q减少冗余信息,只打印出需要的信息。 
-e指定要监视的事件列表。 
--timefmt是指定时间的输出格式。 
--format指定文件变化的详细信息。

所以可以通过脚本挂在后台实时监控指定目录文件用来触发rsync做文件推送:

#!/bin/bash
#rsync_inotify.sh
port=873
src_dir="/data/www/"
rsyncd_user="username"
rsyncd_host="192.168.2.1"
DEST_name="backup"
password_file="/etc/.rsync.passwd"

inotifywait -mrq --timefmt ‘%Y-%m-%d %H:%M:%S‘ --format ‘%T %Xe %w%f‘ -e modify,delete,create,attrib ${src_dir} | while read line
do
    file=$(echo $line | awk ‘{print $4}‘)
    rsync -vzrLtopg --progress --delete --port=${port} ${file} --password-file=${password_file} ${rsyncd_user}@${rsyncd_host}::${DEST_name}
done

这样再把脚本后台启动后加入开机启动文件/etc/rc.local文件中,使得下次在服务器重启后还会生效:

/usr/local/scripts/rsync_inotify.sh &


本文出自 “Jim的技术随笔” 博客,谢绝转载!

以上是关于rsync+inotify的使用注意事项的主要内容,如果未能解决你的问题,请参考以下文章

rsync+inotify 双向同步

rsync+inotify实现代码实时同步

CentOS6.6 rsync+inotify实现数据时时备份

rsync+inotify实现实时同步

rsync远程同步:下行同步上行同步+inotify实时同步

centos 7 编译安装以及配置rsync+inotify 文件实时同步操作记录