方案架构

  • 源服务器:部署 Sersync(监控文件变化) + Rsync(推送数据)
  • 目标服务器:部署 Rsync Daemon(接收数据)
  • 同步逻辑:源服务器文件变动 → Sersync 实时触发 → Rsync 增量同步至目标服务器

详细实施步骤

一、目标服务器配置(数据接收端)

  1. 安装 Rsync

bash

yum install rsync -y  # CentOS

apt install rsync -y  # Ubuntu

  1. 创建 Rsync 配置文件

bash

vim /etc/rsyncd.conf

ini

uid = root

gid = root

use chroot = no

max connections = 2000

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[data_backup]  # 模块名称(客户端同步时指定)

path = /data/backup  # 同步目录

comment = Backup Directory

read only = no  # 允许写入

auth users = rsync_user  # 认证用户

secrets file = /etc/rsync.password  # 密码文件

  1. 创建认证文件

bash

echo "rsync_user:your_password" > /etc/rsync.password

chmod 600 /etc/rsync.password

  1. 创建同步目录

bash

mkdir -p /data/backup

chown -R rsync_user:rsync_user /data/backup

  1. 启动 Rsync 守护进程

bash

systemctl start rsyncd

systemctl enable rsyncd

  1. 开放防火墙端口

bash

firewall-cmd --add-port=873/tcp --permanent

firewall-cmd --reload


二、源服务器配置(数据发送端)

  1. 安装 Rsync

bash

yum install rsync -y  # CentOS

apt install rsync -y  # Ubuntu

  1. 创建 Rsync 密码文件

bash

echo "your_password" > /etc/rsync.password

chmod 600 /etc/rsync.password

  1. 测试手动同步

bash

rsync -avz /source/data/ rsync_user@目标服务器IP::data_backup --password-file=/etc/rsync.password

    • 作用:验证配置正确性,确保网络和权限正常。
  1. 安装 Sersync

bash

wget https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /opt/

mv /opt/GNU-Linux-x86/ /opt/sersync

  1. 修改 Sersync 配置文件

bash

vim /opt/sersync/confxml.xml

xml

<!-- 监控目录设置 -->

<localpath watch="/source/data">  <!-- 源服务器需同步的目录 -->

<remote ip="目标服务器IP" name="data_backup"/>  <!-- 目标服务器模块名 -->

</localpath>

<!-- Rsync 参数 -->

<rsync>

<commonParams params="-artuz"/>  # 归档模式(保留属性)

<auth start="true" users="rsync_user" passwordfile="/etc/rsync.password"/>

<timeout start="false" time="100"/>  <!-- 超时设置 -->

</rsync>

  1. 启动 Sersync

bash

/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml

    • 参数说明
      • -d:守护进程模式
      • -r:启动时先全量同步
      • -o:指定配置文件
  1. 设置开机自启

bash

echo "/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml" >> /etc/rc.local

chmod +x /etc/rc.local


三、验证实时同步

  1. 在源服务器创建测试文件

bash

touch /source/data/testfile.txt

  1. 检查目标服务器同步结果

bash

ls /data/backup  # 应出现 testfile.txt

  1. 查看 Sersync 日志

bash

tail -f /opt/sersync/rsync_fail_log.sh  # 同步失败日志


四、多维优化与监控

1. 性能优化

  • 调整 inotify 限制(解决监控文件数不足问题):

bash

echo "fs.inotify.max_user_watches=1000000" >> /etc/sysctl.conf

sysctl -p

  • Rsync 带宽限制(避免影响业务):

xml

<!-- 在 confxml.xml 中增加 -->

<commonParams params="--bwlimit=10240 -artuz"/>  <!-- 限速 10MB/s -->

2. 高可用方案

  • 双活监控:部署多个 Sersync 进程监控不同目录。
  • 异常重启:添加 crontab 监控进程:

bash

*/5 * * * * pgrep sersync2 || /opt/sersync/sersync2 -d -o /opt/sersync/confxml.xml

3. 安全加固

  • Rsync 最小权限
    • 目标服务器使用非 root 用户运行 Rsync。
    • 配置文件设置 uid = rsync_usergid = rsync_user
  • SSH 隧道加密

xml

<!-- 修改 confxml.xml -->

<rsync>

<ssh start="true" port="22" user="rsync_user"/>

</rsync>

4. 故障排查工具

  • 手动触发同步

bash

/opt/sersync/sersync2 -r -o /opt/sersync/confxml.xml

  • 查看 inotify 事件

bash

tail -f /proc/sys/fs/inotify/*  # 监控事件队列


方案优势

  1. 秒级延迟:Sersync 基于 inotify 内核事件触发,响应速度 <1s。
  2. 增量高效:Rsync 只同步变化部分,节省带宽。
  3. 低资源占用:Sersync 单进程设计,CPU/内存消耗极低。
  4. 断点续传:Rsync 支持传输中断后续传。

注意:大规模集群建议使用 Lsyncd 或 DRBD,单服务器场景本方案为最优解。

Rsync + Sersync 实时数据同步方案的更多相关文章

  1. rsync+inotify实时数据同步多目录实战

    rsync+inotify实时数据同步多目录实战       inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...

  2. rsync+inotify实时数据同步单目录实战

    rsync+inotify实时数据同步单目录实战   rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...

  3. Linux学习系列之Inotify+Rsync实现实时数据同步

    Inotify简介 inotify介绍 inotify是一种强大的.异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加.删除. ...

  4. Inotify+rsync实现实时数据同步

    使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...

  5. centos7部署inotify与rsync实现实时数据同步

    实验环境:CentOS Linux release 7.6.1810 node1:192.168.216.130 客户端(向服务端发起数据同步) node2:192.168.216.132 服务端(接 ...

  6. Rsync+inotify 实时数据同步 inotify master 端的配置

    强大的,细致的,异步的文件系统事件监控机制.Linux 内科从 2.6.13 起支持 inotify Inotify 实现的几款软件:Inotify,sersync,lsyncd ※Inotify 实 ...

  7. Linux系统实时数据同步inotify+rsync

    一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...

  8. Linux下Rsync+sersync实现数据实时同步

    inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...

  9. Rsync+sersync实现数据实时同步

    前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...

  10. CentOS7下Rsync+sersync实现数据实时同步

    近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...

随机推荐

  1. 弹性公网IP的五大核心优势解析

    在云服务架构中,弹性公网IP(EIP)已成为现代企业网络部署的核心组件.与传统固定IP相比,它通过独特的技术机制解决了动态环境下的公网访问难题.以下五大核心优势决定了其不可替代的价值: 一.动态绑定的 ...

  2. DRF之Response源码分析

    DRF之Response源码分析 [一]响应类的对象Response源码 [1]路由 from django.contrib import admin from django.urls import ...

  3. ElasticSearch的映射与文档

    概述 映射官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping.html 映射(mapping)是ES中一 ...

  4. windows10 搭建gitea服务器

    前一章写了在win上搭建gitlab服务器,因为gitlab服务器没有win的安装,所有需要在win上先按照lunix虚拟机. 这里有个小点的git服务器---gitea.适用于个人或者小团队所有. ...

  5. sass ruby 中文

    解决办法: 1.koala可视化编译工具, 找到安装目录里面sass-3.3.7模块下面的engine.rb文件,例如下面路径: C:\Program Files (x86)\Koala\rubyge ...

  6. 05 - Multitouch/RoutedEvents例子

    文中例子是基于wpf Canvas写的,由于Maui还没有支持Canvas,所以顺手自己写一个.之前写了一个InkCanvas,发现扩展性太差了,这次写这个Canvas,支持自定义碰撞测试等.自己写的 ...

  7. 敏捷 | 如何做好服务型Scrum Master?

    无论你的公司是在做敏捷转型还是一开始就使用敏捷,敏捷都是一场变革,会带来组织方式和文化理念上的改变.与此同时,敏捷也对领导力提出了新的需求,需要我们转变观念,成为一名服务型领导. 相关阅读: (1)如 ...

  8. 自用的springboot后端增删改查模板

    Springboot后端简易方式快速搭建 前言 快速学了下.和传统的springboot项目相比,没有用service和serviceImpl.比较不合规,但够简单.可以用于快速开发. 前后端分离.前 ...

  9. 迁移学习&在线学习

    简介 英文: transfer learning 以已训练好的模型A为起点,在新场景中,根据新数据建立模型B 目的:将某个领域或任务上学习到的知识或模式,应用到不同但相关的领域或问题中. 特征提取 使 ...

  10. 堆排序 使用 algorithm

    简介 show code code #include <set> #include <vector> #include <list> #include <io ...