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:
[[email protected] ~]# yum install rsync -y [[email protected] ~]# rpm -qa rsync rsync-3.0.6-12.el6.x86_64 [[email protected] ~]# useradd -s /sbin/nologin -M rsync [[email protected] ~]# 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 [[email protected] ~]# mkdir -p /backup [[email protected] ~]# chown -R rsync.rsync /backup/ [[email protected] ~]# ls -ld /backup/ drwxr-xr-x 5 rsync rsync 4096 Apr 4 13:23 /backup/ [[email protected] ~]# echo "rsync_backup:123456" >/etc/rsync.password [[email protected] ~]# chmod 600 /etc/rsync.password [[email protected] ~]# cat /etc/rsync.password rsync_backup:123456 [[email protected] ~]# rsync --daemon [[email protected] ~]# 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)
服务端部署:
[[email protected] ~]# echo "123456" >/etc/rsync.password [[email protected] ~]# chmod 600 /etc/rsync.password [[email protected] ~]# ls -l /etc/rsync.password -rw------- 1 root root 7 Apr 4 14:09 /etc/rsync.password #服务端创建同步目录并推送测试 [[email protected] conf]# mkdir -p /data/nfs-blog [[email protected] conf]# cd /data/nfs-blog [[email protected] nfs-blog]# ls [[email protected] nfs-blog]# touch lisa.txt [[email protected] 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 #客户端查看同步过来的文件 [[email protected] ~]# ll /backup/ total 0 -rw-r--r-- 1 rsync rsync 0 Apr 4 13:35 lisa.txt 至此,rsync部署完毕,下面部署sersync
部署Sersync:
[[email protected] ~]# mkdir -p /application/tools [[email protected] ~]# cd /application/tools #下载软件并解压 [[email protected] tools]# wget [[email protected] tools]# ls sersync2.5.4_64bit_binary_stable_final.tar.gz [[email protected] tools]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /application/ [[email protected] tools]# cd /application/ [[email protected] application]# ls GNU-Linux-x86 tools [[email protected] application]# mv GNU-Linux-x86/ sersync #把解压后的目录重命名为sersync [[email protected] application]# ls sersync tools [[email protected] application]# cd sersync/ [[email protected] sersync]# ls confxml.xml sersync2 [[email protected] sersync]# mkdir conf bin log #分别建立配置文件目录 [[email protected] sersync]# mv confxml.xml conf #把主配置文件放到conf下 [[email protected] sersync]# mv sersync2 bin/sersync #把启动文件放到bin目录下并改名 [[email protected] sersync]# cd bin/ [[email protected] bin]# ls sersync #修改配置文件 [[email protected] bin]# cd ../conf/ [[email protected] conf]# cp confxml.xml{,.ori} #先备份一份 [[email protected] conf]# ls confxml.xml confxml.xml.ori [[email protected] conf]# cp confxml.xml web_conxml.xml #给配置文件改名 [[email protected] conf]# vim web_conxml.xml #修改配置文件 .................... 24行:<localpath watch="/data/nfs-blog"> #本地同步目录 25行:<remote ip="172.16.1.41" name="nfsbackup"/> #客户端同步目录 .................... 31行:<auth start="true" users="rsync_backup" passwordfil #指定rsync的用户和密码文件 e="/etc/rsync.password"/> ............................... 36行:<failLog path="/application/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> #配置错误日志文件 [[email protected] ~]# mkdir /nfsbackup #修改完成后记得在客户端创建同步目录 [[email protected] ~]# chown -R rsync.rsync /nfsbackup/ [[email protected] conf]# echo "export PATH=$PATH:/application/sersync/bin" >>/etc/profile #把sersync的执行脚本加入到PATH [[email protected] conf]# source /etc/profile #让配置生效 [[email protected] conf]# sersync -r -d -o /application/sersync/conf/web_conxml.xml #启动sersync 启动参数说明: -o:指定配置文件 -d:在后台启动 -r:主服务器和同步服务器先做同步初始保持一致 [[email protected] ~]# 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
启动完成后测试:
#服务端创建文件 [email protected] nfs-blog]# cd /data/nfs-blog/ [[email protected] nfs-blog]# touch lisa.txt [[email protected] nfs-blog]# ls lisa.txt #客户端查看 [[email protected] ~]# ll /nfsbackup/ total 0 -rw-r--r-- 1 rsync rsync 0 Apr 4 15:18 lisa.txt