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

相关推荐
ybdesire43 分钟前
Jinja2模板引擎SSTI漏洞
网络·人工智能·安全·web安全·大模型·漏洞·大模型安全
屎到临头想搅便1 小时前
OSPF综合实验(HCIP)
网络·智能路由器
黑金IT2 小时前
如何在 Electron 应用中安全地进行主进程与渲染器进程通信
服务器·安全·electron
EasyDSS4 小时前
视频监控EasyCVR视频汇聚平台接入海康监控摄像头如何配置http监听功能?
大数据·网络·网络协议·音视频
绵绵细雨中的乡音5 小时前
Linux-进度条小程序
linux·运维·服务器
_丿丨丨_5 小时前
Linux下 文件的查找、复制、移动和解压缩
linux·运维·服务器
跨境卫士-小汪5 小时前
亚马逊热销变维权?5步搭建跨境产品的安全防火墙
网络·经验分享·安全
DanmF--5 小时前
详解与HTTP服务器相关操作
服务器·网络·网络协议·http·unity·c#
mit6.8246 小时前
Linux 系统盘制作 | 引导加载器(GRUB 为例)| mount
linux·运维·服务器
小诸葛的博客6 小时前
Docker Overlay 网络的核心工作(以跨节点容器通信为例)
网络·docker·容器