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

批量同步、批量更新,这应该是做运维的朋友们经常做的工作,rsync是linux下一款非常强大的同步工具,采用差异同步的方法,只上传文件/文件夹的不同部分,同时可以对上传部分先进行压缩,所以rsync的传输效率是很高的但rsync也有缺点,最大的问题就是每次执行rsync命令都会遍历目标目录,当文件不多时,这没什么问题,一旦文件数到了一定规模,那么每次遍历都会消耗很多资源,如果只对经常改动的目录进行同步,也可以忽略这个问题,如果每次改动的目录多较大,那么就要用到inotify了,Inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13起,加入了对Inotify的支持,通过Inotify可以监控文件系统中的添加、删除、修改、移动等各种事件,但inotify只提供了C语言接口,不方便调用,所以我们需要先安装inotify-tools

一、系统环境:
CentOS_5.7-x86_64
更新源服务器:192.168.9.227
目的服务器:192.168.9.226  192.168.9.228  ... ...

二、目的服务器配置:192.168.9.226 192.168.9.228(rsync服务端):
1、检查rsync是否安装

rpm -qa|grep rsync 

如果没有发装,执以下命令进行安装

yum -y install rsync 

2、定义rsync配置文件/etc/rsyncd.conf
192.168.9.226:

cat >> /etc/rsyncd.conf << EOF uid = nobody   gid = nobody   use chroot = no max connections = 100   timeout = 600   pid file = /var/run/rsyncd.pid    lock file = /var/run/rsyncd.lock    log file = /var/log/rsyncd.log    [web1]   path = /data/www1/    ignore errors    read only = no   list = no   hosts allow = 192.168.9.0/255.255.255.0    auth users = www1   secrets file = /etc/www1.pwd   EOF 

192.168.9.228:

cat >> /etc/rsyncd.conf << EOF uid = nobody   gid = nobody   use chroot = no max connections = 100   timeout = 600   pid file = /var/run/rsyncd.pid    lock file = /var/run/rsyncd.lock    log file = /var/log/rsyncd.log    [web2]   path = /data/www2/    ignore errors    read only = no   list = no   hosts allow = 192.168.9.0/255.255.255.0    auth users = www2   secrets file = /etc/www2.pwd   EOF 

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

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