最新消息:运维之路

CentOS 6.x下Sersync+Rsync实时同步服务器配置

系统运维 admin 158浏览 0评论

rsync

 

Rsync介绍

rsync是类unix系统下的数据镜像备份工具.

Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

Rsync本来是用于替代rcp的一个工具,目前由rsync.samba.org维护,所以rsync.conf文件的格式类似于samba的主配置文件。Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。
连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。

Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,如cwRsync和Sync2NAS等工具。

sersync的介绍

sersync主要用于服务器同步,web镜像等功能。基于boost1.43.0,inotify api,rsync command.开发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:
sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
项目地址在:https://sersync.googlecode.com 可能需要翻墙
我在vps上down了最新32位和64位版本的 顺便给出下载地址:

32位    http://3ez.net/download/sersync2.5_32bit_binary_stable_final.tar.gz
64位    http://3ez.net/download/sersync2.5.4_64bit_binary_stable_final.tar.gz
源码包   http://3ez.net/download/sersync2.5_source.tar.gz

 

安装Rsync

像这种应用就直接rsync安装就好了     不折腾去找源码安装了….
#直接yum安装或者去找最新的rpm包安装都可以

yum -y install   rsync

rsync的rpm包列表地址:http://pkgs.repoforge.org/rsync

wget http://pkgs.repoforge.org/rsync/rsync-3.1.1-1.el6.rfx.x86_64.rpm

rpm包安装

rpm   -ivh     rsync-3.1.1-1.el6.rfx.x86_64.rpm

 

#设置rsync的配置文件
vi /etc/rsyncd.conf

uid=root
gid=root
#最大连接数
max connections=36000
#默认为true,修改为no,增加对目录文件软连接的备份
use chroot=no
#定义日志存放位置
log file=/var/log/rsyncd.log
#忽略无关错误
ignore errors = yes
#设置rsync服务端文件为读写权限
read only = no
#认证的用户名与系统帐户无关在认证文件做配置,如果没有这行则表明是匿名
auth users = rsync
#密码认证文件,格式(虚拟用户名:密码)
secrets file = /etc/rsync.pass
#这里是认证的模块名,在client端需要指定,可以设置多个模块和路径
[img]
comment = img
path=/data/web/img
echo "rsync:rsyncpass**" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
rsync --daemon --config=/etc/rsyncd.conf

 

如果img模块有别的设定可以在里面再定义不采用全局的定义      密码文件必须是 600 权限否则会启动不了 无法同步

 

sersync 安装与配置

首先下载 然后解压 配置 启动 Sersync就可以用啦
wget http://3ez.net/download/sersync2.5.4_64bit_binary_stable_final.tar.gz
tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86 /usr/local/sersync #解压并拷贝到安装目录
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="false"/>
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>

<sersync>
<localpath watch="/data/web/img"> #监控目录,一旦本地目录有文件变化,将同步到服务端
<remote ip="192.168.2.3" name="recv"/>#服务端ip和同步模块
</localpath>
<rsync>
<commonParams params="-artuz"/> #rsync同步参数
<auth start="true" users="rsync" passwordfile="/etc/rsync.pass"/> #服务端认证密码
<userDefinedPort start="false" port="873"/>
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>

5. 启动sersync

./sersync2 -d -o confxml.xml
-d:启用守护进程模式
-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
-n: 指定开启守护线程的数量,默认为10个
-o:指定配置文件,默认使用confxml.xml文件

转载请注明:DevOps » CentOS 6.x下Sersync+Rsync实时同步服务器配置

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址