项目实战:Rsync + Sersync 实现文件实时同步
客户端中数据发生变化,同步到server端(备份服务器)。
Rsync:负责数据同步,部署在server端。
Sersync:负责监控数据目录变化,并调用rsync进行同步,*部署在client端。
部署 Rsync 服务
安装软件包
[root@server ~]# yum install -y rsync-daemon
配置 rsync
本次实验使用验证用户同步。
#web服务器的数据变化,同步给 backup
# 准备同步目录,该目录任何用户都可以读写。
[root@server ~]# mkdir -m 777 /backup
# 配置rsync,不验证用户,直接同步
[root@server ~]# vim /etc/rsyncd.conf
......
# 添加如下配置
[backup]
# 描述信息
comment = backup
# 备份路径
path = /backup
# 设置可写
read only = no
# 指定用户名
auth users = rsync
# 指定用户密码文件
secrets file = /etc/rsyncd.secrets
# 创建用户凭据文件
[root@server ~]# echo 'rsync:123' > /etc/rsyncd.secrets
[root@server ~]# chmod 400 /etc/rsyncd.secrets
# 启用并启动rsyncd服务
[root@server ~]# systemctl enable rsyncd --now
# 配置防火墙
[root@server ~]# firewall-cmd --add-service=rsyncd
[root@server ~]# firewall-cmd --add-service=rsyncd --permanent
更多 rsyncd.conf 配置参考 rsyncd.conf(5)。
客户端配置和测试
# 准备密码文件
[root@client ~]# echo 123 > rsyncd.secrets
#只读权限(仅编辑用户拥有)
[root@client ~]# chmod 400 rsyncd.secrets
# 传输测试
#关闭 SELinux
[root@server baoshenghui]# setenforce 0
[root@client ~]# rsync -av /etc/hostname rsync@server::backup
Password:
sending incremental file list
hostname
sent 114 bytes received 35 bytes 59.60 bytes/sec
total size is 20 speedup is 0.13
# 验证结果
[root@server ~]# ls /backup/
hostname
部署 Sersync 服务
Sersync 服务介绍
sersync 使用c++编写,类似于inotify,同样用于监控,但它克服了inotify的缺点。
inotify 最大的不足是会产生重复事件,或者同一个目录下多个文件的操作会产生多个事件,例如,当监控目录中有5个文件时,删除目录时会产生6个监控事件,从而导致重复调用rsync命令。比如:vim文件时,inotify会监控到临时文件的事件,但这些事件相对于rsync来说是不应该被监控的。
sersync 优点:
- sersync 同步效率更高,它会对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,节省了运行时耗和网络资源。
- sersync配置很简单,其中提供了静态编译好的二进制文件和xml配置文件,直接使用即可。
- sersync使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
- sersync有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。
- sersync自带crontab功能,只需在xml配置文件中开启,按要求隔一段时间整体同步一次。
- sersync 可以二次开发。
sersync项目地址:https://code.google.com/archive/p/sersync/
sersync下载地址:https://code.google.com/archive/p/sersync/downloads
安装软件包
# 下载软件
[root@client ~]# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz
# 解压文件
[root@client ~]# tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@client ~]# ls GNU-Linux-x86/
confxml.xml sersync2
文件说明:
- sersync2,是二进制程序。
- confxml.xml,是sersync2程序的配置文件。
配置 Sersync
配置文件说明
[root@client ~]# cat GNU-Linux-x86/confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<!-- hostip与port是针对插件的保留字段,对于同步功能没有任何作用,保留默认即可。 -->
<host hostip="localhost" port="8008"></host>
<!-- 是否开启debug模式 -->
<debug start="false"/>
<!-- 如果是xfs文件系统,则需要设置为true才能同步,rehat/REEL/CentOS/Fedora新版本默认都是xfs文件系统,可使用df -Th命令查看 -->
<fileSystem xfs="true"/>
<!-- 过滤器,设置为true则会对里面的exclude对应的正则匹配到的文件进行过滤,即不同步 -->
<filter start="true">
<!-- <exclude expression="(.*)\.svn"></exclude> -->
<!-- <exclude expression="(.*)\.gz"></exclude> -->
<!-- <exclude expression="^info/*"></exclude> -->
<!-- <exclude expression="^static/*"></exclude> -->
<exclude expression="^cache/*"></exclude>
</filter>
<!-- inotify是linux的内核功能,这里用于设置创建/删除/修改/移动文件时,是否视为文件改变(进而进行同步) -->
<inotify>
<!-- 删除一个文件是否视为文件改变(很明显我们要设置为true) -->
<delete start="false"/>
<!-- 创建一个文件夹是否视为文件改变(很明显我们要设置为true) -->
<createFolder start=

最低0.47元/天 解锁文章
1991

被折叠的 条评论
为什么被折叠?



