|
利用rsync实现网站镜像同步
作者:Operation by CrazyLinux 工作室
一、安装
RHEL5默认使用的是rsync 2.x版本的。对系统资源使用较大,建议下载3.x版本的使用
下载地址 http://rsync.samba.org/
1、安装(推送端与接收端都需要安装)
#tar -zxvf rsync-3.0.7.tar.gz
#cd rsync-3.0.7
#./configure --prefix=/usr/local/rsync3
#make && make install
2、修改配置文件 (接收端需要配置,推送端不用)
#vim /etc/rsyncd.conf
uid=root #使用用户
gid=root #使用组
max connections=36000 #最大连接
use chroot=no #是否使用chroot。
log file=/var/log/rsyncd.log #日志文件
pid file=/var/run/rsyncd.pid #pid文件
lock file=/var/run/rsyncd.lock #参数锁文件
strict modes =yes #是否监测密码文件的权限
#rsync现由samba公司维护。所以风格和samba很像
[wwwroot] #定义模块,供外部访问的
path=/home/wwwroot #定义真实路径
comment=wwwroot backup #描述信息
ignore errors=yes #在判断是否运行传输时的删除操作时忽略server上的IO错误
read only=no #是否为只读。No为允许写入
auth users = crazylinux #认证用户
secrets file = /etc/rsync.pas #密码文件:格式: crazylinux:password
hosts allow=192.168.1.0/24 #定义允许的网段
hosts deny=0.0.0.0 #拒绝的网段
# cat /etc/rsync.pas
crazylinux:123456
--------------------------------------------------------------------------------------------------------
上面配置文件,表明允许主服务器(假设ip为192.168.1.0/24网段)访问,rsync同步模块名为[wwwroot],将同步过来的文件放入path指定的目录/home/wwwroot。如果有多台从服务器,则每一台都需要进行类似的配置。
配置好之后,使用如下命令,开启rsync守护进程:
ln -s /usr/local/rsync3/bin/rsync /usr/bin
rsync --daemon
二、在推送端安装配置sresync
在http://code.google.com/p/sersync/downloads/list下载sersync的可执行文件版本,里面有配置文件与可执行文件,这里用sersync2.5进行说明,新版本配置形式类似。
tar -zxvf sersyncXxxx_xxbit_binary.tar.gz
cd GNU-Linux-x86/
vim confxml.xml
修改如下部分:
<sersync>
<localpath watch="/home/wwwroot"> #定义本地路径
<remote ip="192.168.1.103" name="wwwroot"/> #定义接收端的ip和模块
</localpath>
<rsync> #如果开启认证模式需要修改如下
<commonParams params="-artuz"/> #rsync远程参数
<auth start="true" users="crazylinux" passwordfile="/etc/rsync.pas"/>
#定义远程用户名和密码文件
<userDefinedPort start="false" port="874"/><!-- port=874 --> #定义端口
<timeout start="false" time="100"/><!-- timeout=100 --> #定义同步间隔时间,以s为单位
<ssh start="false"/>
</rsync>
# cat /etc/rsync.pas
123456
--------------------------------------------------------------------------------------------------------
表明要将主服务器上本地的/home/wwwroot路径下的文件,同步到远程服务器192.168.1.103上的wwwroot模块。
运行Sersync与Sersync启动参数
sersync会对目录进行监控,将变化的目录或文件同步到远程服务器。sersync是递归监控的,如果有多级目录,都会同步到远程服务器。常用启动方式如下:
1.在主服务器上开启sersync守护进程,使sersync在后台运行,开启实时同步。
./sersync -d
过程如下:
# ls
confxml.xml sersync2
# ./sersync2-d
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
daemon thread num:10
parse xml config file
host ip:localhost host port:8008
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
please according your cpu ,use -n param to adjust the cpu rate
run the sersync:
watch path is:/home/wwwroot
表明,sersync已经开启,可以在本地监控路径下建立文件,查看远程是否同步成功。
2.同步参数
./sersync2 -d 开启实时同步
-o xxx.xml 指定配置文件
-n num 指定默认的线程池的线程总数
-m pluginName 不进行同步,只运行插件
./sersync -r -d -n 2 -o confxml.xml 多个命令可以同时使用(实时同步,开启2个线程。指定配置文件)
9.补充:
在rhel5中默认是不允许客户端同步服务端的,主要是SElinux他禁止了这个行为,要想同步就要修改SElinux的策略,用以下方法来解决:
setsebool -P allow_rsync_anon_write 1意思为允许客户端从服务端下载数据,或完全禁止rsync受SElinux的保护,就使用下面命令来取消SElinux对rsync的保护:setsebool -p rsync_disable_trans 1
rsync的命令格式能够为:
1. rsync [OPTION]... SRC [SRC]... DEST
2. rsync [OPTION]... SRC [SRC]... [USER@]HOSTEST
3. rsync [OPTION]... [USER@]HOST:SRC DEST
4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
6. rsync [OPTION]... rsync://[USER@]HOST[ORT]/SRC [DEST]
rsync有六种不同的工作模式:
1. 拷贝本地文档;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
2.使用一个远程shell程式(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
3.使用一个远程shell程式(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
4. 从远程rsync服务器中拷贝文档到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
5. 从本地机器拷贝文档到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
6. 列远程机的文档列表。这类似于rsync传输,但是只要在命令中省略掉本地机信息即可。​
|
|