inotify+rsync

来源【原创】 / 1363人浏览
时间:2011-12-22 13:03:00
0
inotify+rsync
作为系统运维人员,在工作中大多会遇到集群服务器的维护,在规模不大的时候,采用手动部署逐台更新项目配置,可能会应付的了不会出问题,可是一旦业务扩增服务器的规模扩大一个级别,则手动逐台更改配置文件则效率开始变的地下和容易产生错误。
inotify+rsync可以实现,一点变动,多点实时更新的效果。inotify技术从kernel 2.6.13开始正式并入内核,RHEL5已经支持。
下面是安装计划步骤



1、确认系统对inotify的支持, 看看是否有 /proc/sys/fs/inotify/目录,以确定内核是否支持inotify。
   [root@nginx-m inotify]# ls /proc/sys/fs/inotify/
   max_queued_events  max_user_instances  max_user_watches

2、安装程序,inotify 和 rsync
   rsync 一般系统会默认安装好,直接使用即可,如不清楚,请看网上查找相关rsync的帖子。
   下载inotify  ;   地址:http://inotify-tools.sourceforge.net/

   编译安装
  ./configure
   make
  make install
    安装完毕后会有一个inotifywait命令,可以通过man inotifywait 查看具体的命令帮助。
    主要通过inotifywait 监控具体目录和文件的变动。
   
    inotify 可以监视的文件系统事件包括:
   
  IN_ACCESS,即文件被访问
  IN_MODIFY,文件被 write
  IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等
  IN_CLOSE_WRITE,可写文件被 close
  IN_CLOSE_NOWRITE,不可写文件被 close
  IN_OPEN,文件被 open
  IN_MOVED_FROM,文件被移走,如 mv
  IN_MOVED_TO,文件被移来,如 mv、cp
  IN_CREATE,创建新文件
  IN_DELETE,文件被删除,如 rm
  IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
  IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
  IN_UNMOUNT,宿主文件系统被 umount
  IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
  IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)

  注:上面所说的文件也包括目录。


    inotifywait 命令的常用参数包括:
    -m, --monitor      保持一直监听
    -r, --recursive    若有多级目录循环递归每一层。
    -q, --quiet        静默式运行
    -e <event>, --event <event>  create,move,delete,modify
   
   
3、实际示例:

#cat inotify.sh

#!/bin/sh
src=/usr/local/nginx/conf/
des=inotifyhome                  
ip=172.16.1.2 172.16.1.4 172.16.1.5
user=sysman
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib $src |  while read file
do
        for i in $ip
        do
              rsync  -vzrtopgl  --delete --progress  --files-from=file.list  --password-file=/etc/rsyncd.pwd  $src
        done
done

4、运行脚本

[root@localhost]# inotify.sh

       
打赏