查看: 2708|回复: 25

Linux下利用rsync实现网站镜像同步

[复制链接]
发表于 2013-1-28 09:48:17 | 显示全部楼层 |阅读模式
利用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传输,但是只要在命令中省略掉本地机信息即可。&#8203;

发表于 2013-2-5 19:50:23 | 显示全部楼层
晕死也不多加点分  
发表于 2013-2-6 05:53:46 | 显示全部楼层
又看了一次  
发表于 2013-2-6 07:43:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-11-5 01:50:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-11-17 21:39:48 | 显示全部楼层
怎么就没人拜我为偶像那?? ~  
发表于 2014-12-5 09:13:14 | 显示全部楼层
好贴坏贴,一眼就看出去  
发表于 2014-12-28 14:37:59 | 显示全部楼层
鉴定完毕.!  
发表于 2015-1-28 12:56:42 | 显示全部楼层
要不我崇拜你?行吗?  
发表于 2015-3-2 08:47:02 | 显示全部楼层
谢谢楼主啊!
高级模式
B Color Image Link Quote Code Smilies

本版积分规则