Sersync简介

sersync是国人周洋基于Inotify开发的,类似于Inotify-tools的工具。

Sersync项目利用inotify与rsync技术实现对服务器数据实时同步的解决方案,其中inotify用于监控sersync所在服务器上文件系统的事件变化,rsync是目前广泛使用的本地及异地数据同步工具,其优点是只对变化的目录数据操作,甚至是一个文件不同的部分进行同步,所有其优势大大超过使用挂载文件系统或scp等方式进行镜像同步。


Sersync的优点:

1、使用c++编写,对linux系统文件产生的临时文件和重复的文件操作会进行过滤,在结全rsyn同步的时候,会减少运行时消耗的本地及网络资源,因此速度更快。

2、使用多线程进行同步。

3、Sersync自带crontab功能。

4、Sersync自带socket与http的协议扩展,可以满足二次开发。

5、配置简单,源代码:http://code.google.com/p/sersync/downloads/list处下载。


Rsync+Inotify-tools与Rsync+sersync的区别:


1、Rsync+Inotify-tools

(1):Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来;

(2):rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。


2、Rsync+sersync

(1):sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;

(2):rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。


小结:当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync。


Sersync安装配置:


安装环境:

主机名
操作系统版本 IP
角色
nfs01 CentOS release 6.8 (Final) 172.16.1.31/24 Sersync服务端
backup CentOS release 6.8 (Final) 172.16.1.41/24 Sersync客户端


部署rsync:

[root@backup ~]# yum install rsync -y
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
[root@backup ~]# useradd -s /sbin/nologin -M rsync
[root@backup ~]# vim /etc/rsyncd.conf 
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
path = /backup/
ignore errors
read only = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /backup/
[nfsbackup]
path = /nfsbackup
#rsync_config_____end
[root@backup ~]# mkdir -p /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 5 rsync rsync 4096 Apr  4 13:23 /backup/
[root@backup ~]# echo "rsync_backup:123456" >/etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:123456
[root@backup ~]# rsync --daemon
[root@backup ~]# lsof -i:873
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   1320 root    3u  IPv4  10988      0t0  TCP *:rsync (LISTEN)
rsync   1320 root    5u  IPv6  10989      0t0  TCP *:rsync (LISTEN)

服务端部署:


[root@nfs01 ~]# echo "123456" >/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 Apr  4 14:09 /etc/rsync.password
#服务端创建同步目录并推送测试
[root@nfs01 conf]# mkdir -p /data/nfs-blog
[root@nfs01 conf]# cd /data/nfs-blog
[root@nfs01 nfs-blog]# ls
[root@nfs01 nfs-blog]# touch lisa.txt
[root@nfs01 nfs-blog]# rsync -avz /data/nfs-blog/lisa.txt [email protected]::backup --password-file=/etc/rsync.password 
sending incremental file list
lisa.txt

sent 65 bytes  received 27 bytes  184.00 bytes/sec
total size is 0  speedup is 0.00

sent 65 bytes  received 27 bytes  184.00 bytes/sec
total size is 0  speedup is 0.00
#客户端查看同步过来的文件
[root@backup ~]# ll /backup/
total 0
-rw-r--r-- 1 rsync rsync 0 Apr  4 13:35 lisa.txt
至此,rsync部署完毕,下面部署sersync

部署Sersync:

[root@nfs01 ~]# mkdir -p /application/tools
[root@nfs01 ~]# cd /application/tools
#下载软件并解压
[root@nfs01 tools]# wget 
[root@nfs01 tools]# ls
sersync2.5.4_64bit_binary_stable_final.tar.gz 
[root@nfs01 tools]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /application/
[root@nfs01 tools]# cd /application/
[root@nfs01 application]# ls
GNU-Linux-x86  tools
[root@nfs01 application]# mv GNU-Linux-x86/ sersync   #把解压后的目录重命名为sersync
[root@nfs01 application]# ls
sersync  tools
[root@nfs01 application]# cd sersync/
[root@nfs01 sersync]# ls
confxml.xml  sersync2
[root@nfs01 sersync]# mkdir conf bin log             #分别建立配置文件目录
[root@nfs01 sersync]# mv confxml.xml conf            #把主配置文件放到conf下
[root@nfs01 sersync]# mv sersync2 bin/sersync        #把启动文件放到bin目录下并改名
[root@nfs01 sersync]# cd bin/
[root@nfs01 bin]# ls
sersync
#修改配置文件
[root@nfs01 bin]# cd ../conf/
[root@nfs01 conf]# cp confxml.xml{,.ori}             #先备份一份
[root@nfs01 conf]# ls
confxml.xml  confxml.xml.ori
[root@nfs01 conf]# cp confxml.xml web_conxml.xml     #给配置文件改名
[root@nfs01 conf]# vim web_conxml.xml                #修改配置文件
....................
24行:             #本地同步目录
25行:     #客户端同步目录
....................
31行: 
...............................
36行:   #配置错误日志文件
                                        
[root@backup ~]# mkdir /nfsbackup                          #修改完成后记得在客户端创建同步目录
[root@backup ~]# chown -R rsync.rsync /nfsbackup/
[root@nfs01 conf]# echo "export PATH=$PATH:/application/sersync/bin" >>/etc/profile  #把sersync的执行脚本加入到PATH
[root@nfs01 conf]# source /etc/profile                         #让配置生效
[root@nfs01 conf]# sersync -r -d -o /application/sersync/conf/web_conxml.xml     #启动sersync

启动参数说明: -o:指定配置文件   -d:在后台启动  -r:主服务器和同步服务器先做同步初始保持一致

[root@nfs01 ~]# ps -ef|grep sersync                     #查看进程
root       1403      1  0 14:59 ?        00:00:00 sersync -r -d -o /application/sersync/conf/web_conxml.xml
root       1419   1249  0 14:59 pts/0    00:00:00 grep sersync

启动完成后测试:

#服务端创建文件
root@nfs01 nfs-blog]# cd /data/nfs-blog/
[root@nfs01 nfs-blog]# touch lisa.txt
[root@nfs01 nfs-blog]# ls
lisa.txt
#客户端查看
[root@backup ~]# ll /nfsbackup/
total 0
-rw-r--r-- 1 rsync rsync 0 Apr  4 15:18 lisa.txt