Rsync+Sersync文件实时同步
rsync介绍:
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
基本特性
⚫ 可以镜像保存整个目录树和文件系统
⚫ 可以很容易做到保持原来文件的权限、时间、软硬链接等
⚫ 无须特殊权限即可安装
⚫ 优化的流程,文件传输效率高
⚫ 可以使用 rsh、ssh 方式来传输文件,当然也可以通过直接的 socket 连接
⚫ 支持匿名传输,以方便进行网站镜象在 windows 平台下也有相应的版本,如 cwrsync 和DeltaCopy 等。
Sersync介绍和对比 :
1、Sersync 使用 c++ 编写,对 linux 系统文件产生的临时文件和重复的文件操作会进行过滤,在本文后面会提到该点。使用sersyc和rsync结合做同步的时候,会大大减少运行时所消耗的本地以及网络资源,因此在速度方面有显著提升。
2、相比 Inotify-tools 和 Openduckbill,Sersync 配置起来更为简单方便。在谷歌 S
ersync 项目下载的安装包的 bin 目录下,放置了已经编译好的二进制文件,搭配 bin 目录下的xml文件可以直接部署使用。
3、Sersync 采用多线程(默认10)进行同步(即可以并发同步多个不同文件),尤其是针对较大文件同步的时候,它能够保证多个服务器实时保持同步状态。
4、Sersync 自带了出错处理机制。它可以通过失败队列自动对之前出错的文件进行重新同步操作。如果届时依旧失败,它会每 10 个小时对同步失败的文件再进行重新同步操作,直到文件同步为止。
5、Sersync 自带有 crontab 功能,因此不需要借助系统的 crontab ,只需在 xml 配置文件中开启该功能,即可按预先的配置,每隔一段时间自动做一次整体同步操作。
6、Sersync 还自带了 socket 与 refreshCDN 的协议扩展,可以满足有特殊需求的公司二次开发。
Sersync和inotify进行对比
inotify优点:
监控文件系统事件变化,通过同步工具实现实时数据同步
iontify缺点:
1.并发如果大于200个文件(10-100K),同步会有延迟
2.监控到事件后,调用rsync同步是单线程的(加&并发),sersync多进程同步
sersync的优点:
(1)配置文件
(2) 真正的守护进程socket
(3)可以对失败的文件定时重传
(4)第三方的http接口
(5) 默认是多线程的同步
环境介绍:
机器 Centos7.x
主机名 | ip | 软件包 |
---|---|---|
backup | 192.168.200.10 | Rsync |
master | 192.168.200.20 | Sersync |
Rsync配置
Centos 7 自带rsync
[root@backup ~]# rpm -qa rsync
rsync-3.1.2-6.el7_6.1.x86_64
# 配置rsync配置文件 按照需求根据下面修改
[root@backup ~]# cat /etc/rsyncd.conf
#用户远端的命令使用rsync访问共享目录
uid = rsync
#安全组
gid = rsync
#安全相关
use chroot = no
#最大连接
max connections = 200
#超时时间
timeout = 300
#pid存放位置
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.200.0/24
#虚拟用户
auth users = rsync_backup
#虚拟用户和密码
secrets file = /etc/rsync.password
fake super = yes
#共享模块名
[www]
#模块注释
comment = "Here's the explanation"
#共享位置
path = /data/www/
[bbs]
comment = "Here's the explanation"
path = /data/bbs/
[root@backup ~]# mkdir /data/{www,bbs} -p
[root@backup ~]# ll /data/
总用量 0
drwxr-xr-x. 2 root root 6 12月 18 15:27 bbs
drwxr-xr-x. 2 root root 6 12月 18 15:27 www
#创建rsync用户
[root@backup ~]# useradd rsync -s /sbin/nologin
#编写虚拟用户和密码 把他输出到一个文件里面
[root@backup ~]# echo "rsync_backup:pwd123" > /etc/rsync.password
#给予权限
[root@backup ~]# chmod 600 /etc/rsync.password
#后台启动rsync
[root@backup ~]# rsync --daemon
#查看是否启动
[root@backup ~]# netstat -anpt | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 29893/rsync
tcp6 0 0 :::873 :::* LISTEN 29893/rsync
配置Sersync服务 master端
[root@master ~]# rpm -qa | grep rsync
rsync-3.1.2-6.el7_6.1.x86_64