sersync的优点:

	1)使用c++编写,对linux系统文件产生的临时文件和重复的文件操作会进行过滤,在结合rsync同步的时候,
	会减少运行时消耗的本地及网络资源,因此速度更快.
	2)相比较上面的两个项目,sersync配置起来很简单;在http://code.google.com/p/sersync/downloads/list处
	下载源码,其中bin目录下是已经编译好的二进制文件,配合bin目录下的xml文件直接使用即可
	3)使用多线程进行同步(即可以并发多个不同的文件),尤其在同步较大的文件时,能够保证多个服务器实时
		保持同步状态.
	4)sersync自带出错处理机制,通过失败队列出错的文件重新同步,如果仍旧失败,则每若干小时对同步失败的文件
	重新同步
	5)sersync自带crontab功能,只需在xml配置文件中开启,即可按预先的配置,隔一段时间整体同步一次
	6)sersync自带socket与http的协议扩展,可以满足有特殊需求的公司的二次开发.

*1:准备三台服务器:M-SERVER S1-SERVER S2-SERVER

1)rsync 服务端: (S1 S2)
rsync在S1-SERVER  S2-SERVER中 /etc/rsyncd.conf的配置
#Rsync server
#created by liming
#rsync.conf start#
uid=rsync
gid=rsync
use chroot=no
max connection=2000
timeout=600
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
ignore errors
read only=false
list=false
hosts allow=192.168.254.0/24    #(backup服务端IP全称/24  或   *)
host deny=0.0.0.0/32
auth users=rsync_backup
secrets file=/etc/rsync.password
fake super = yes
################################
[www]
comment=www by liming
path=/data0/www/www/
[bbs]
comment=www by liming
path=/data0/www/bbs/
[blog]
comment=www by liming
path=/data0/www/blog

2)两台机器创建目录

mkdir -p /data0/www/www/ /data0/www/bbs/ /data0/www/blog/
tree /data0

3)配置相关认证:

echo "rsync_backup:liming111" >/etc/rsync.password
chmod 600 /etc/rsync.password
cat /etc/rsync.password
ll /etc/rsync.password

4)开启rsync

rsync --daemon
ps -ef |grep rsync
netstat -lntup|grep 873
lsof -i :873

5)设置开机自启动:

echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
ll /etc/rc.d/rc.local
grep daemon /etc/rc.local

6)重启命令:

pkill rsync
rsync --daemon
ps -ef|grep rsync

*2.配置rsync客户端:(在Master上配置rsync权限)

在Master上配置rsync客户端相关认证
echo "liming111" >/etc/rsync.password
chmod 600 /etc/rsync.password
cat /etc/rsync.password
ll /etc/rsync.password

*3手动测试:(在Master上测试)

mkidr -p /data0/www/ && cd /data0/www
touch bbs/bbs.log www/www.log blog/blog.log
tree /data0

双方关闭防火墙:

systemctl stop firewalld.service
systemctl disable firewalld.service

(在客户端Master端上测试以下命令:)

rsync -avzP /data0/www/www/ rsync_backup@S1-SERVER::www/ --password-file=/etc/rsync.password
rsync -avzP /data0/www/www/ rsync_backup@S2-SERVER::www/ --password-file=/etc/rsync.password

rsync -avzP /data0/www/bbs/ rsync_backup@S1-SERVER::bbs/ --password-file=/etc/rsync.password
rsync -avzP /data0/www/bbs/ rsync_backup@S2-SERVER::bbs/ --password-file=/etc/rsync.password

rsync -avzP /data0/www/blog/ rsync_backup@S1-SERVER::blog/ --password-file=/etc/rsync.password
rsync -avzP /data0/www/blog/ rsync_backup@S2-SERVER::blog/ --password-file=/etc/rsync.password

(在后面进行部署sersync之前,sersync主服务器上必须要确保手工可以把文件推送到S1,S2上,这样后续sersync才能调用这些命令来推送)

*4下载sersync(在Master上开始部署sersync服务)

mkdir -p /home/liming/tools
cd /home/liming/tools
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz

 tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/  #(解压到/usr/local/下)

cd /usr/local
mv GNU-Linux-x86 sersync
tree sersync/

cd sersync
mkdir conf bin logs
mv confxml.xml conf/
mv sersync2 bin/sersync
tree

配置sersync 文件: 先备份: /bin/cp conf/confxml.xml conf/confxml.xml.liming.$(date +%F)

vim conf/confxml.xml   (将文件中24-28行删除或注释,修改为以下内容)
					<localpath watch="/data0/www/">
						 <remote ip="192.168.254.156" name="www"/>
							<remote ip="192.168.254.157" name="www"/>
					</localpath>
					<!-- ################################# -->
					<localpath watch="/data0/www/">
							<remote ip="192.168.254.156" name="bbs"/>
							<remote ip="192.168.254.157" name="bbs"/>
					</localpath>
					<!-- ################################# -->
					<localpath watch="/data0/www/">
							<remote ip="192.168.254.156" name="blog"/>
							<remote ip="192.168.254.157" name="blog"/>
					</localpath>
					<!-- ################################# -->
	(再修改原31-34行,认证的部分)
<rsync>
						<commonParams params="-aruz"/>
						<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
						<userDefinedPort start="false" port="874"/><!-- port=874 -->
						<timeout start="true" time="100"/><!-- timeout=100 -->
						<ssh start="false"/>
				</rsync>
				<failLog path="/usr/local/sersync/logs/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

*5 :开启sersync守护进程同步数据

配置sersync环境变量(将sersync配置成全局环境变量) M-SERVER当中

echo 'export PATH=$PATH:/usr/local/sersync/bin' >> /etc/profile
tail -l /etc/profile
source /etc/profile
which sersync

启动命令: sersync -r -d -o /usr/local/sersync/conf/confxml.xml (-o 指定配置文件,默认的是二进制目录下的conf配置文件 ; -d 是在后台启动,守护进程 ; -r初始化时保持参数一致)

以上测试,三个目录在同一个配置文件有问题,所以分开来配置:

cd /usr/local/sersync/conf
cp confxml.xml www_confxml.xml   (bbs blog  同样如此)
修改方式将对应24-28行修改为自己目录的配置文件,下面的log目录也修改为要配置的目录即可.

配置好配置文件以后:启动配置文件

sersync -r -d -o /usr/local/sersync/conf/www_confxml.xml
sersync -r -d -o /usr/local/sersync/conf/bbs_confxml.xml
sersync -r -d -o /usr/local/sersync/conf/blog_confxml.xml

(注意:执行以上重启配置文件 的命令前,首先需要杀掉之前开启的sersycn进程,不然可能会出错)

ps -ef|grep sersync
pkill sersync
-------------------------
写入10000个文件批量同步测试
for n in `seq 10000`;do echo ddd>www/$n.txt;done
(提示:我们发现本地已经写完了10000个文件,而远端只同步了1000多个)