快速业务通道

Inotify Rsync实现linux文件实时同步

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-24
imited depth. Symbolic links are not

  traversed. Newly created subdirectories will also be watched.

  -q, --quiet

  If specified once, the program will be less verbose. Specifically, it will not state when it has completed establishing all inotify watches.

  -e , --event

  Listen for specific event(s) only. The events which can be listened for are listed in the EVENTS section. This option can be specified more than once. If omitted, all events are listened for. use“,”separate multi events


  三、使用

  1.查看是否支持inotify,从kernel 2.6.13开始正式并入内核,RHEL5已经支持.看看是否有 /proc/sys/fs/inotify/目录,以确定内核是否支持inotify

  2.关于递归:

  inotifywait

  This command simply blocks for inotify events, making it appropriate for use in shell scripts. It can watch any set of files and directories, and can recursively watch entire directory trees.

Empire CMS,phome.net

  3.使用:

  注:当要排出同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径.详细查看man rsync

  当要排除都某个目录的事件监控的处理时,为inotifywait添加--exclude或--excludei参数.详细查看man inotifywait

  另:/usr/local/bin/inotifywait -mrq --timefmt ''%d/%m/%y %H:%M'' --format ''%T %w%f''

  -e modify,delete,create,attrib

  ${src}

  上面的命令返回的值类似于:

  10/03/09 15:31 /wwwpic/1

  这3个返回值做为参数传给read,关于此处,有人是这样写的:

  inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F;do细化了返回值.

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

  小脚本,同步到多台主机:

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

  参考:http://www.ibm.com/developerworks/cn/linux/l-ubuntu-inotify/index.html


  关于减少rsync的遍历,未完:考虑到被监测的目录每次有一下时间时都会触发rsync,modify, delete,create,move每次rsync都会遍历源目录,当被监测目录内文件特别多时,会造成系统资源的严重消耗,,让rsync每次只同步修改的文件.,如果从监控目录mv走一个目录,那么rsync只会报告找不到你移走的目录而无法删除备份机的应该删除的目录.,对于删除这个事件,没有办法了,只能同步被删除文件或目录的上级目录了.将事件分为两部分,modify, create, move事件,触发rsync,只同步修改了的文件.delete事件,同步被删除文件或目录的上级目录(不能越过要同步的根目录).

Empire CMS,phome.net

  关于脚本内容的一些说明:

  rsync.conf里的目录格式一定要注意,没有的“/"

  boot.sh

  对于rsync命令的目标地址,是由两部分组成的:

  1、rsync.conf里的dest

  des=`grep ''^dest'' ${basedir}/rsync.conf|

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号