rsync+sersync实时同步

本文介绍rsync+sersync架构,一种基于inotify的高效数据同步方案。相较于rsync+inotify-tools,sersync能精确记录并同步变化的文件,大幅提高大容量数据同步效率。文章详细讲解了sersync原理、部署步骤及测试方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、sersync介绍

1.为什么要用rsync+sersync架构?
  • sersync是基于inotify开发的,类似于inotify-tools的工具
    sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录
2.rsync+inotify-tools与rsync+sersync架构的区别?

2.1rsync+inotify-tools

  • inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
    rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低

2.2 rsync+sersync

  • sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;
    rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。

总结:

  • 当同步的目录数据量不大时,建议使用rsync+inotify
    当同步的目录数据量很大时(几百G甚至1T以上)文件很多时,建议使用rsync+sersync
3.sersync原理
  • sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器;

二、部署sersync(前提是已经部署好了rsync daemon)

1.下载sersync(我才发现我居然用的是32位的系统)

[root@rsync-B ~]# tar xf sersync2.5_32bit_binary_stable_final.tar.gz 
[root@rsync-B ~]# mkdir sersync
[root@rsync-B ~]# ll
total 624
drwxr-xr-x 2 root root   4096 Jul  4  2010 GNU-Linux-x86
drwxr-xr-x 2 root root   4096 Jul 23 10:02 sersync
-rw-r--r-- 1 root root 629501 Jul  4  2010 sersync2.5_32bit_binary_stable_final.tar.gz
[root@rsync-B ~]# mkdir sersync/conf
[root@rsync-B ~]# mkdir sersync/bin
[root@rsync-B ~]# mkdir sersync/log
[root@rsync-B ~]# cp GNU-Linux-x86/sersync2 sersync/bin/
[root@rsync-B ~]# cp GNU-Linux-x86/confxml.xml sersync/conf/
[root@rsync-B ~]# cp sersync/conf/confxml.xml sersync/conf/confxml.xml.backup

2.编辑配置文件

6-11行 过滤功能
12-21行 监控功能
23-46行 同步功能
修改
24 <localpath watch="/data1">
25         <remote ip="10.0.0.129" name="liang"/>
30             <commonParams params="-avz"/>
31             <auth start="true" users="rsync_liang" passwordfile="/etc/rsync.
    password"/>
33             <timeout start="true" time="100"/><!-- timeout=100 -->

3.设置环境变量

[root@rsync-B ~]# tail -2 /etc/profile
export SERSYNC_HOME=/root/sersync/bin/
export PATH=$SERSYNC_HOME:$PATH
[root@rsync-B ~]# source /etc/profile

4.启动sersync服务

[root@rsync-B ~]# sersync2 -d -r -o sersync/conf/confxml.xml
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
option: -d      run as a daemon
option: -r      rsync all the local files to the remote servers before the sersync work
option: -o      config xml name:  sersync/conf/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost     host port: 8008
daemon start,sersync run behind the console 
use rsync password-file :
user is rsync_liang
passwordfile is         /etc/rsync.password
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) 
Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /data1 && rsync -avz -R --delete ./  --timeout=100 rsync_liang@10.0.0.129::liang --password-file=/etc/rsync.password >/dev/null 2>&1 
run the sersync: 
watch path is: /data1

[root@rsync-B data1]# ps -ef|grep sersync
root      9049     1  0 10:26 ?        00:00:00 sersync2 -d -r -o sersync/conf/confxml.xml
root      9065  8566  0 10:27 pts/1    00:00:00 grep sersync

5.测试
5.1在/data1创建文件

[root@rsync-B data1]# ls
a.txt  c.txt  e.txt  g.txt  i.txt  k.txt  m.txt  o.txt  q.txt  s.txt  u.txt  w.txt  y.txt
b.txt  d.txt  f.txt  h.txt  j.txt  l.txt  n.txt  p.txt  r.txt  t.txt  v.txt  x.txt  z.txt

5.2到服务端查看

[root@rsync-B data1]# ls
a.txt  c.txt  e.txt  g.txt  i.txt  k.txt  m.txt  o.txt  q.txt  s.txt  u.txt  w.txt  y.txt
b.txt  d.txt  f.txt  h.txt  j.txt  l.txt  n.txt  p.txt  r.txt  t.txt  v.txt  x.txt  z.txt

6.添加另外两个模块

[root@rsync-B ~]# cd sersync/conf/
[root@rsync-B conf]# ls
confxml.xml  confxml.xml.backup

6.1编辑文件

[root@rsync-B conf]# cp confxml.xml liang2.confxml.xml
[root@rsync-B conf]# vim liang2.confxml.xml 
 25             <remote ip="10.0.0.129" name="liang2"/>
[root@rsync-B conf]# cp confxml.xml liang3.confxml.xml
[root@rsync-B conf]# vim liang3.confxml.xml 
 25             <remote ip="10.0.0.129" name="liang3"/>

6.2启动

[root@rsync-B conf]# sersync2 -d -r -o /root/sersync/conf/liang2.confxml.xml 
...
..
.
[root@rsync-B conf]# sersync2 -d -r -o /root/sersync/conf/liang3.confxml.xml
...
..
.

6.3测试

[root@rsync-A liang1]# ls /liang3
c.txt  f.txt  i.txt  l.txt  o.txt  r.txt  u.txt  x.txt
a.txt  d.txt  g.txt  j.txt  m.txt  p.txt  s.txt  v.txt  y.txt
b.txt  e.txt  h.txt  k.txt  n.txt  q.txt  t.txt  w.txt  z.txt
[root@rsync-A liang1]# ls /liang2
c.txt  f.txt  i.txt  l.txt  o.txt  r.txt  u.txt  x.txt
a.txt  d.txt  g.txt  j.txt  m.txt  p.txt  s.txt  v.txt  y.txt
b.txt  e.txt  h.txt  k.txt  n.txt  q.txt  t.txt  w.txt  z.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值