项目实战1:Rsync + Sersync 实现文件实时同步

项目实战: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=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值