三、更新源服务器配置:192.168.9.227 (rsync客户端)
1、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)
注:上面所说的文件也包括目录。
2、安装inotify-tools
在安装inotify-tools前请先确认你的linux内核是否打到了2.6.13,并且在编译时开启了CONFIG_INOTIFY选项,也可以通过以下命令检测
- ls /proc/sys/fs/inotify
- wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
- tar xvf inotify-tools-3.14.tar.gz
- cd inotify-tools-3.14
- ./configure
- make;make install
3、编写rsync监控脚本
- vi /root/rsync.sh
-m, 即--monitor,表示始终保持事件监听状态。
- #!/bin/bash
- host1=192.168.9.226
- host2=192.168.9.228
- src=/data/www/
- des1=web1
- des2=web2
- user1=www1
- user2=www2
- /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' \
- -e modify,delete,create,attrib \
- ${src} \
- | while read file
- do
- rsync -vzrtopg --delete --progress ${src} ${user1}@${host1}::${des1} --password-file=/etc/www1.pwd &&
- rsync -vzrtopg --delete --progress ${src} ${user2}@${host2}::${des2} --password-file=/etc/www2.pwd &&
- echo "${files} was rsynced" >> /tmp/rsync.log 2>&1
- echo "---------------------------------------------------------------------------"
- done
-r, 即--recursive,表示递归查询目录。
-q, 即--quiet,表示打印出监控事件。
-e, 即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等
--timefmt:指定时间的输出格式
--format:指定变化文件的详细信息
建立认证文件 (rsync客户端认证文件只用加入密码)
- echo "741852" >> /etc/www1.pwd
- echo "951753" >> /etc/www2.pwd
- chmod 600 /etc/www1.pwd
- chmod 600 /etc/www2.pwd
- /bin/sh -n /root/rsync.sh //语法检查
- chmod +x /root/rsync.sh
- nohup sh /root/rsync.sh &
- echo "nohup sh /root/rsync.sh &" >> /etc/rc.local
四、同步测试
在更新源服务器上新建一个文件,运行以下的命令,看文件是否可以正常同步,看有无报错信息
- rsync -vzrtopg --delete --progress /data/www1/ www1@192.168.9.226::web1 --password-file=/etc/www1.pwd
将要更新的文件提交到更新源服务器中,这样就通过inotify+rsync批量的将更新文件同步到所有的目的服务器中,相当方便快捷
(责任编辑:ken)