一、环境准备与核心概念
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 的模式 主要有三种:
enforcing(默认):严格执行 SELinux 安全策略,违反策略的操作会被阻止并记录日志。permissive:不阻止违反策略的操作,但会记录日志(用于调试策略)。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目录,应实时同步上述操作结果
浙公网安备 33010602011771号