Rsync+sersync2实现目录实时同步

Sersync + rsync 实现实时同步服务

sersync2二进制包目录规划

复制代码
/app/tools/sersync/
/app/tools/sersync/bin
/app/tools/sersync/conf

项目架构是这样的:

复制代码
+-------------------+        +-------------------+        +-------------------+
|                   |        |                   |        |                   |
|    Web Server     | -----> |    NFS Server     | -----> | Backup Server     |
|                   |        |                   |        |                   |
+-------------------+        +-------------------+        +-------------------+
      ^                               ^                           ^
      |                               |                           |
      |                               |                           |
  (通过NFS挂载)                 (提供共享目录)             (实时同步数据)

首先需要在rsync服务端更改一下配置文件,增加nfsbackup模块,

复制代码
[nfsbackup]
path = /nfsbackup
comment = nfsbackup Directory
read only = no
list = no                   # 禁止列出模块(安全建议)

再创建nfsbackup文件夹

shell 复制代码
mkdir /nfsbackup/ -p

最后重启rsyncd服务

shell 复制代码
systemctl restart rsyncd 

NFS服务器的相关配置

先决条件:创建data目录,挂载本地目录

shell 复制代码
mkdir /data/ -p
mount -t nfs /data/ /mnt

接下来需要更改NFS的配置文件,它是/etc/exports

shell 复制代码
vim /etc/exports

增加一行

复制代码
/nfsdata 192.168.179.0/24(rw,sync,all_squash,anonuid=1999,anongid=1999,no_subtree_check)

然后重新加载一下nfs 服务

shell 复制代码
systemctl reload nfs 
  • 配置sersync2,先创建目录
shell 复制代码
mkdir /app/tools/sersync/ -p
mkdir /app/tools/sersync/bin -p
mkdir /app/tools/sersync/conf -p

下载sersync的二进制包到本地

shell 复制代码
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz

解压压缩包,然后进入目录,里面有两个文件,sersync2是二进制包,可以直接运行。confxml.xml是sersync的配置文件

shell 复制代码
tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
cd GNU-Linux-x86
[root@nfs-01 GNU-Linux-x86]# ll
total 1772
-rwxr-xr-x 1 root root    2214 Oct 26  2011 confxml.xml
-rwxr-xr-x 1 root root 1810128 Oct 26  2011 sersync2

对于sersync2,可以使用软链接的方式放到/bin目录下,不需要移动文件

shell 复制代码
ln -s /app/tools/sersync/bin/sersync2 /bin

然后进入/app/tools/sersync/conf目录下,修改confxml.xml这个配置文件

shell 复制代码
cd /app/tools/sersync/conf
vim confxml.xml
xml 复制代码
    <localpath watch="/data">
            <remote ip="192.168.179.152" name="nfsbackup"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>
        <rsync>
            <commonParams params="-artuz"/>
            <auth start="true" users="root" passwordfile="/etc/rsync-client.pass"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="false" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>
2.1 本地路径与监控配置 (<localpath>)
xml 复制代码
xml复制代码<localpath watch="/监控的目录路径">  <!-- 示例:/data/www -->
    <remote ip="远程IP1" name="rsync模块名"/>  
    <remote ip="远程IP2" name="rsync模块名"/>  
</localpath>
  • 关键参数 :
    • watch:需监控的本地目录(如 /data/www),目录需存在且有读权限。
    • <remote>:可配置多个远程服务器,ip 为远程服务器 IP,name 对应服务端 rsyncd.conf 中定义的模块名。
2.2 rsync 参数配置 (<rsync>)
xml 复制代码
xml复制代码<rsync>
    <commonParams params="-artuz --delete"/>  <!-- rsync 命令参数 -->
    <auth start="true" users="rsync用户名" passwordfile="/密码文件路径"/>  <!-- 认证配置 -->
    <userDefinedPort start="false" port="874"/>  <!-- 默认端口873 -->
    <timeout start="false" time="100"/>  <!-- 超时设置 -->
    <ssh start="false"/>  <!-- 是否使用SSH -->
</rsync>
  • 关键参数:

    复制代码
      commonParams

    • -artuz:归档模式、递归、保留时间、增量同步、压缩传输。
    • --delete建议添加,删除目标端多余文件(保持严格一致时使用)。
    复制代码
      auth

    • users:远程 rsyncd.conf 中配置的认证用户名(如 rsync_user)。

    • passwordfile:本地存储密码的文件路径(如 /etc/rsync.pass),文件内容仅为密码,权限需 600

    • userDefinedPort:若修改了 rsync 默认端口(默认 873),需在此处启用并指定端口。

    • sshstart="false" 表示使用 rsync 协议,若为 true 则需配置 SSH 密钥认证。

修改完之后查看区别

shell 复制代码
vimdiff /GNU-Linux-x86/confxml.xml

web服务器挂载NFS共享目录

现在还需要挂载NFS的目录:

先创建一个目录,就叫做upload吧

shell 复制代码
mkdir /upload -p

然后再进行挂载:

shell 复制代码
mount -t nfs 192.168.179.151:/data

查看目录挂载情况

shell 复制代码
df -h /upload/

软链接到bin目录

bash 复制代码
ln -s /app/tools/sersync/bin/sersync2 /bin/

使用sersync2的help命令

shell 复制代码
sersync2 -h

启动服务

shell 复制代码
sersync2 -rdo /app/tools/bin/confxml.xml 

查看状态是否正常

shell 复制代码
ps -ef | grep sersync2

测试,在web服务器上创建十个文件

在备份服务器上查看,可以看到数据完全被同步过来了。

到此,测试通过。通过rsync+sersync2的方式完成了一个实时同步的小项目,还是非常有实战价值的

相关推荐
007张三丰2 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
weixin_604236673 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春4 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
换个昵称都难7 小时前
webrtc 音频模块FEC模块
网络·音视频·webrtc
youngerwang7 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
lizhihai_998 小时前
股市学习心得-AI 产业链核心标的梳理清单
大数据·服务器·人工智能·科技·学习
黄同学real9 小时前
解决 Visual Studio Web Deploy 远程发布报 401 未授权 (ERROR\_USER\_UNAUTHORIZED)
服务器
天天进步20159 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
智慧光迅AINOPOL10 小时前
校园在线巡课系统方案:督导全覆盖
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案
Java面试题总结10 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器