教学之友,学习之友。

站长教学网

linux下利用inotify+rsync文件实时同步更新(2)

时间:2012-07-31 11:20来源:未知 作者:ken 点击:

三、更新源服务器配置: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选项,也可以通过以下命令检测

  1. ls /proc/sys/fs/inotify 

  1. wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  
  2. tar xvf inotify-tools-3.14.tar.gz  
  3. cd inotify-tools-3.14  
  4. ./configure  
  5. make;make install 

3、编写rsync监控脚本
 

  1. vi /root/rsync.sh 

-m, 即--monitor,表示始终保持事件监听状态。

  1. #!/bin/bash
  2. host1=192.168.9.226
  3. host2=192.168.9.228
  4. src=/data/www/
  5. des1=web1
  6. des2=web2
  7. user1=www1
  8. user2=www2
  9. /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' \
  10. -e modify,delete,create,attrib \
  11. ${src} \
  12. | while read file
  13. do
  14. rsync -vzrtopg --delete --progress ${src} ${user1}@${host1}::${des1} --password-file=/etc/www1.pwd &&
  15. rsync -vzrtopg --delete --progress ${src} ${user2}@${host2}::${des2} --password-file=/etc/www2.pwd &&
  16. echo "${files} was rsynced" >> /tmp/rsync.log 2>&1
  17. echo "---------------------------------------------------------------------------"
  18. done


-r, 即--recursive,表示递归查询目录。
-q, 即--quiet,表示打印出监控事件。
-e, 即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等
--timefmt:指定时间的输出格式
--format:指定变化文件的详细信息

建立认证文件  (rsync客户端认证文件只用加入密码)

  1. echo "741852" >> /etc/www1.pwd  
  2. echo "951753" >> /etc/www2.pwd  
  3. chmod 600 /etc/www1.pwd  
  4. chmod 600 /etc/www2.pwd 
  1. /bin/sh -n /root/rsync.sh  //语法检查  
  2. chmod +x /root/rsync.sh  
  3. nohup sh /root/rsync.sh &  
  4. echo "nohup sh /root/rsync.sh &" >> /etc/rc.local 

四、同步测试
在更新源服务器上新建一个文件,运行以下的命令,看文件是否可以正常同步,看有无报错信息

  1. rsync -vzrtopg --delete --progress /data/www1/ www1@192.168.9.226::web1 --password-file=/etc/www1.pwd 

将要更新的文件提交到更新源服务器中,这样就通过inotify+rsync批量的将更新文件同步到所有的目的服务器中,相当方便快捷

 

(责任编辑:ken)
TAG标签: linux Rsync inotify
顶一下
(4)
80%
踩一下
(1)
20%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容