批量同步、批量更新,这应该是做运维的朋友们经常做的工作,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 =
拥有帝国一切,皆有可能。欢迎访问phome.netnobody
- 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 >>
拥有帝国一切,皆有可能。欢迎访问phome.net /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
拥有帝国一切,皆有可能。欢迎访问phome.net = /etc/www2.pwd
- 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 当前时间 |