一、环境准备与核心概念

1. 环境说明

  • 两台主机:webapp(10.1.8.10,监控端)、backup(10.1.8.11,备份端)
  • 核心软件:Rsync(备份服务)、Sersync(文件监控 + 同步触发)
  • 同步逻辑:Sersync 监控 webapp 端目标目录,文件变化时自动调用 Rsync 同步到 backup 端

2. 核心语法概览

  • Rsync:远程文件同步工具,核心语法 rsync [参数] 源路径 目标路径
  • Sersync:监控工具,通过配置文件定义规则,核心语法 sersync2 [参数]

二、Rsync 服务部署(backup 端)

1. 安装 Rsync

bash

yum install -y rsync  #  yum 安装 Rsync 软件包
  • 语法说明:yum install -y [软件名] 是 CentOS 系统包管理命令,-y 自动确认安装选项,无需手动交互。

2. 配置 Rsync 服务

(1)创建备份目录

bash

mkdir -m 777 /backup  # 创建权限为 777 的备份目录
  • 语法说明:mkdir -m [权限] [目录名]-m 直接指定目录权限,777 表示所有用户可读写执行(适合测试环境)。
(2)编辑配置文件 /etc/rsyncd.conf

conf

uid=root  # 运行 Rsync 服务的用户
gid=root  # 运行 Rsync 服务的组
[backup]  # 备份模块名(客户端需对应此名称)
comment = backup  # 模块描述
path = /backup  # 备份目录路径
read only = no  # 允许写入(客户端可同步文件到服务端)
auth users = rsync  # 认证用户名
secrets file = /etc/rsyncd.secrets  # 密码文件路径
  • 语法说明:配置文件采用 “键 = 值” 格式,[模块名] 定义一个备份实例,客户端同步时需指定 “用户名 @服务端 IP:: 模块名”。
(3)创建密码文件

bash

echo 'rsync:redhat' > /etc/rsyncd.secrets  # 写入“用户名:密码”
chmod 400 /etc/rsyncd.secrets  # 设置权限为 400(仅 root 可读)
  • 语法说明:echo '内容' > 文件名 写入文件,chmod 400 [文件] 限制文件权限,避免密码泄露(Rsync 要求密码文件权限必须为 400)。

3. 启动服务与环境配置

bash

systemctl enable rsyncd --now  # 启用并立即启动 Rsync 服务
firewall-cmd --add-service=rsyncd  # 临时开放防火墙 Rsync 端口(873)
firewall-cmd --add-service=rsyncd --permanent  # 永久开放防火墙规则
setenforce 0  # 临时关闭 SELinux(避免权限拦截)

如果显示防火墙未开启:

注意事项:

查看当前 SELinux 模式:

可通过 sestatus 命令查看,例如:

bash

sestatus

输出中 Current mode 会显示当前模式(enforcing/permissive)。

  • 临时开启防火墙(立即生效,重启后失效):

    bash

    systemctl start firewalld
  • 永久开启防火墙(开机自启动,需重启或手动生效):

    bash

    systemctl enable firewalld
  • 在 Linux 中,setenforce 0 是一个与 SELinux(Security-Enhanced Linux)相关的命令,用于临时将 SELinux 的 enforcement(强制执行)模式切换为 permissive(宽容模式)

  • 具体作用:

  • SELinux 的模式 主要有三种:

    1. enforcing(默认):严格执行 SELinux 安全策略,违反策略的操作会被阻止并记录日志。
    2. permissive:不阻止违反策略的操作,但会记录日志(用于调试策略)。
    3. disabled:完全禁用 SELinux(需重启生效)。
  • setenforce 0 会将当前运行模式切换为 permissive(无需重启,临时生效);对应的,setenforce 1 会切换回 enforcing 模式。

  • 临时生效:该命令的效果仅在当前系统运行时有效,重启后会恢复为 /etc/selinux/config 配置文件中设置的默认模式(SELINUX=enforcing 或其他)。
  • 永久修改:若需永久生效,需编辑配置文件 vim /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=permissive 或 SELINUX=disabled,然后重启系统。
  • 适用场景:通常用于临时排查因 SELinux 策略导致的权限问题(例如服务启动失败、文件访问被拒等),不建议长期在生产环境中关闭 SELinux(会降低系统安全性)。
  • 语法说明:
    • systemctl enable --now [服务名] 组合命令,enable 设置开机自启,--now 立即启动。
    • firewall-cmd --add-service=[服务名] 开放对应服务端口,--permanent 使规则永久生效(需重新加载防火墙)。

三、Rsync 客户端配置与测试(webapp 端)

1. 创建客户端密码文件

bash

echo redhat > rsyncd.secrets  # 仅写入密码(无需用户名)
chmod 400 rsyncd.secrets  # 权限限制为 400
  • 语法说明:客户端密码文件仅需存储服务端配置的密码,格式为纯文本密码,权限要求同服务端。

2. 同步测试

bash

rsync -av --password-file=./rsyncd.secrets /etc/hostname rsync@10.1.8.11::backup
  • 核心语法解析:
    • rsync:同步命令主体
    • -av:组合参数,-a 归档模式(保留文件属性、递归同步),-v 详细输出(显示同步过程)
    • --password-file=[文件路径]:指定密码文件,避免手动输入密码
    • 源路径:/etc/hostname(本地待同步文件)
    • 目标路径:rsync@10.1.8.11::backup(格式为 “认证用户 @服务端 IP:: 模块名”)

3. 验证结果

bash

ls /backup/  # 在 backup 端执行,查看是否存在同步的 hostname 文件
  • 语法说明:ls [目录名] 列出目录内容,确认文件同步成功。

四、Sersync 服务部署(webapp 端)

1. Sersync 核心优势

  • 过滤临时文件和重复事件,提升同步效率
  • 支持多线程同步,适配大文件场景
  • 自带失败重试和定时整体同步功能
  • 配置简单,提供二进制文件直接使用

2. 安装 Sersync

bash

# 下载软件包
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz
# 解压文件
tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz
  • 语法说明:
    • wget [URL] 下载网络文件,直接指定文件链接即可
    • tar -xf [压缩包名]-x 解压,-f 指定压缩包文件,无需手动指定解压目录(默认解压到当前目录)

3. 配置 Sersync

(1)核心配置文件说明(confxml.xml)

xml


    
    
    
      
  
    
      
      
      
      
      
      
      
      
  
  
      
        
    
      
        
        
        
        
    
      
      
  
  • 语法说明:XML 配置文件采用标签嵌套格式,start="true/false" 控制功能开关,expression 用于正则匹配过滤规则。
(2)配置文件部署

bash

cp confxml.xml /etc/sersyncd.conf  # 将配置文件复制到系统目录

4. 运行 Sersync

(1)准备监控目录

bash

mkdir /app_data  # 创建本地监控目录
(2)部署二进制程序

bash

cp GNU-Linux-x86/sersync2 /usr/local/bin/  # 复制程序到系统 PATH 目录(可直接执行)
(3)Sersync 核心语法与启动

bash

sersync2 -o /etc/sersyncd.conf -d  # 以守护进程模式运行
  • 语法参数解析:
    • -o [配置文件路径]:指定自定义配置文件(默认使用当前目录 confxml.xml)
    • -d:启用守护进程模式(后台运行)
    • -r:启动前先执行一次全量同步(初始化目录)
    • -n [数量]:指定守护线程数(默认 10 个,可根据 CPU 调整)
    • -m [模块名]:启用扩展模块(如 refreshCDN、socket)

5. 系统服务管理(可选)

bash

# 创建 systemd 服务文件
vim /etc/systemd/system/sersyncd.service

写入以下内容:

conf

[Unit]
Description=SerSync server daemon
[Service]
Type=forking
ExecStart=/usr/local/bin/sersync2 -o /etc/sersyncd.conf -d
[Install]
WantedBy=multi-user.target
  • 启用服务:

bash

systemctl daemon-reload  # 重新加载服务配置
systemctl enable sersyncd.service  # 设置开机自启
  • 语法说明:systemctl daemon-reload 用于刷新 systemd 服务配置,确保新创建的服务文件被识别。

五、功能测试

1. 监控备份端目录

在 backup 端执行,实时查看目录变化:

bash

watch -n 1 tree /backup  # 每 1 秒刷新一次目录结构
  • 语法说明:watch -n [秒数] [命令] 周期性执行命令,实时显示输出结果。

2. 触发同步事件(webapp 端)

bash

echo hello world > /app_data/welcome.txt  # 创建文件
mkdir /app_data/dbdata  # 创建目录
rm -fr /app_data/*  # 删除文件/目录
  • 观察 backup 端的 /backup 目录,应实时同步上述操作结果