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),需在此处启用并指定端口。

    • ssh:start="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的方式完成了一个实时同步的小项目,还是非常有实战价值的

相关推荐
半杯咖啡半行码3 小时前
Linux 驱动开发入门:内核模块编程基础
linux·服务器·网络
智能直播4 小时前
RK3528 V4L2 框架 UVC 接口自动获取 H.264 / MJPEG / YUYV 格式:从内核采集到硬解分发
java·网络·实时音视频·视频编解码·h.264
honsor4 小时前
机房IP化改造首选:以太网温湿度传感器,PoE供电+Modbus TCP一网搞定
linux·运维·服务器
睿智の男孩4 小时前
MIG IP核对DDR3的输出时序分析记录
网络·网络协议·tcp/ip
艾芯微科技4 小时前
高充放电流锂电充放 SoC:ETA9885E10,便携储能、小移动电源 BOM 选型笔记
网络·单片机·嵌入式硬件·集成测试·51单片机
2401_868534784 小时前
数据交换方式
服务器·网络
艾芯微科技5 小时前
钰泰 ETA6973PQ3Y|QFN3×3 2A 同步降压 Buck,I2C 可配置多档输出,动态调压 PMIC
网络·单片机·嵌入式硬件·fpga开发·集成测试·51单片机
默|笙5 小时前
【Linux网络】_udp_socket(认识)
linux·网络·udp
中屹指纹浏览器svip5 小时前
打开账号环境网页报错,常见原因有哪些?
服务器·开发语言·php·中屹指纹浏览器