利用inotify+rsync实现Linux文件批量更新(3)

4、建立认证文件/etc/www1.pwd ,此文件须与配置文件中指定文件名保持一致
此处格式为:username:password,安全问题,并不建议实际使用中使用root用户
192.168.9.226:

echo "www1:741852" >> /etc/www1.pwd 

192.168.9.228:

echo "www2:951753" >> /etc/www2.pwd 

并且我们需要设置此文件的权限为600

chmod 600 /etc/www1.pwd  chmod 600 /etc/www2.pwd  chmod 600 /etc/rsyncd.conf 

5、建立motd文件(可有可无)
rsyncd.motd记录了rsync服务的欢迎信息,你可以在其中输入任何文本信息,如:

echo "Welcome to use the rsync services!" >> /var/rsyncd.motd 

6、启动rsync

/usr/bin/rsync --daemon   echo "/usr/bin/rsync --daemon" >> /etc/rc.local 

三、更新源服务器配置: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 

利用inotify+rsync实现Linux文件批量更新


如果有 max_queued_events,max_user_instances,max_user_watches 三项就说明支持

wget   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=web1des2=web2user1=www1user2=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:指定变化文件的详细信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pxfgj.html