快速业务通道

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

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-24

批量同步、批量更新,这应该是做运维的朋友们经常做的工作,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是否安装

  1. rpm -qa|grep rsync

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

  1. yum -y install rsync

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

  1. cat >> /etc/rsyncd.conf << EOF
  2. uid = 拥有帝国一切,皆有可能。欢迎访问phome.netnobody
  3. gid = nobody
  4. use chroot = no
  5. max connections = 100
  6. timeout = 600
  7. pid file = /var/run/rsyncd.pid
  8. lock file = /var/run/rsyncd.lock
  9. log file = /var/log/rsyncd.log
  10. [web1]
  11. path = /data/www1/
  12. ignore errors
  13. read only = no
  14. list = no
  15. hosts allow = 192.168.9.0/255.255.255.0
  16. auth users = www1
  17. secrets file = /etc/www1.pwd
  18. EOF

192.168.9.228:

  1. cat >> 拥有帝国一切,皆有可能。欢迎访问phome.net /etc/rsyncd.conf << EOF
  2. uid = nobody
  3. gid = nobody
  4. use chroot = no
  5. max connections = 100
  6. timeout = 600
  7. pid file = /var/run/rsyncd.pid
  8. lock file = /var/run/rsyncd.lock
  9. log file = /var/log/rsyncd.log
  10. [web2]
  11. path = /data/www2/
  12. ignore errors
  13. read only = no
  14. list = no
  15. hosts allow = 192.168.9.0/255.255.255.0
  16. auth users = www2
  17. secrets file 拥有帝国一切,皆有可能。欢迎访问phome.net = /etc/www2.pwd
  18. EOF

3、rsyncd.conf配置文件详解
uid = nobody //运行RSYNC守护进程的用户
gid = nobody //运行RSYNC守护进程的组
use chroot = 0 //不使用chroot
max connections = 0 // 最大连接数,0为不限制
port = 873 //默认端口873

下面这些文件是安装完RSYNC服务后自动生成的文件
pid file = /var/run/rsyncd.pid //pid文件的存放位置
lock file = /var/run/rsync.lock //锁文件的存放位置.指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock.
log file = /var/log/rsyncd.log //日志记录文件的存放位置

Timeout = 300
通过该选项可以覆盖客户指定的IP超时时间.通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端.超时单位为秒钟,0表示没有超时定义,这也是默认值.对于匿名rsync服务器来说,一个理想的数字是600.

Log format = %t %a %m %f %b
通过该选项用户在使用transfer logging可以自己定制日志文件的字段.其格式是一个包含格式定义符的字符串,可以使用的格式定义符如下所示:
%h 远程主机名
%a 远程IP地址
%l 文件长度字符数
%p 该次rsync会话的进程id
%o 操作类型:" send" 或" recv"
%f 文件名
%P 模块路径
%m 模块名
%t 当前时间

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号