实时同步演示
-
- 技术架构全景
- 核心组件详解
-
- [1. inotify 内核子系统](#1. inotify 内核子系统)
- [2. Rsync 高效同步工具](#2. Rsync 高效同步工具)
- 实践演示
-
- 一、环境准备与安装
-
- [1. 检查内核支持](#1. 检查内核支持)
- [2. 安装 inotify-tools](#2. 安装 inotify-tools)
- [二、配置 Rsync 服务端(目标机)](#二、配置 Rsync 服务端(目标机))
-
- [1. 创建 Rsync 配置文件](#1. 创建 Rsync 配置文件)
- [2. 启动 Rsync 守护进程](#2. 启动 Rsync 守护进程)
- 三、配置实时同步脚本(源机)
-
- [1. 创建同步脚本](#1. 创建同步脚本)
- [2. 设置权限并启动](#2. 设置权限并启动)
- 四、测试与验证
- 命令总结表格
- 功能作用详解
- [1. 核心事件类型说明](#1. 核心事件类型说明)
- [2. 内核参数优化](#2. 内核参数优化)
技术架构全景
inotify监控 触发同步 数据存储 日志记录 日志记录 源服务器 文件系统事件 Rsync传输 目标服务器 备份目录 同步日志
核心组件详解
1. inotify 内核子系统
- 功能:监控文件系统事件
- 内核支持:Linux 2.6.13+
- 监控能力:
- 单进程监控文件数:默认8192(可调优)
- 事件队列长度:默认16384(可调优)
- 响应延迟:毫秒级
2. Rsync 高效同步工具
特性 | 优势 | 适用场景 | 传输效率 |
---|---|---|---|
增量同步 | 仅传输变化部分 | 大文件同步 | 极高 |
压缩传输 | 减少带宽占用 | 跨网络同步 | 高 |
校验机制 | 数据一致性保证 | 关键数据备份 | 可靠 |
权限保持 | 保留文件属性 | 系统迁移 | 完整 |
实践演示
一、环境准备与安装
1. 检查内核支持
bash
[root@localhost ~]# uname -r
5.14.0-284.el9.x86_64 # 内核版本需 ≥2.6.13
[root@localhost ~]# grep INOTIFY_USER /boot/config-$(uname -r)
CONFIG_INOTIFY_USER=y # 输出此值表示支持
2. 安装 inotify-tools
bash
# 启用 EPEL 源(CentOS/Rocky)
[root@localhost ~]# dnf install epel-release -y
[root@localhost ~]# dnf install inotify-tools rsync -y
# 验证安装
[root@localhost ~]# inotifywait --help | head -n 3
inotifywait 3.22.6
Wait for a particular event on a file or set of files.
Usage: inotifywait [options] file1 [file2] [file3] ...
二、配置 Rsync 服务端(目标机)
1. 创建 Rsync 配置文件
bash
[root@localhost ~]# vi /etc/rsyncd.conf
[backup] # 模块名
path = /data/backup # 同步目标目录
uid = root # 运行用户
gid = root # 运行组
read only = no # 关闭只读(关键!
hosts allow = 192.168.1.0/24 # 允许的客户端IP
2. 启动 Rsync 守护进程
bash
[root@localhost ~]# systemctl enable --now rsyncd
[root@localhost ~]# ss -tunlp | grep 873
tcp LISTEN 0 5 *:873 *:* users:(("rsync",pid=1234))
三、配置实时同步脚本(源机)
1. 创建同步脚本
bash
[root@localhost ~]# vi /opt/inotify_rsync.sh
#!/bin/bash
SRC="/var/www/html" # 监控的源目录
DEST="192.168.1.100::backup" # Rsync 目标地址
LOG="/var/log/inotify_rsync.log"
# 持续监控事件
inotifywait -mrq -e create,delete,move,modify,attrib "$SRC" | while read path event file
do
rsync -azP --delete "$SRC" "$DEST" >> "$LOG" 2>&1
echo "[$(date +'%F %T')] $file 事件: $event" >> "$LOG"
done
2. 设置权限并启动
bash
[root@localhost ~]# chmod +x /opt/inotify_rsync.sh
[root@localhost ~]# nohup /opt/inotify_rsync.sh & # 后台运行
四、测试与验证
bash
# 在源目录创建测试文件
[root@localhost ~]# touch /var/www/html/test{1..3}.txt
# 查看目标目录同步结果
[root@localhost ~]# ls /data/backup
test1.txt test2.txt test3.txt
# 检查同步日志
[root@localhost ~]# tail /var/log/inotify_rsync.log
[2025-07-28 14:22:05] test1.txt 事件: CREATE
[2025-07-28 14:22:05] test2.txt 事件: CREATE
[2025-07-28 14:22:06] test3.txt 事件: CREATE
命令总结表格
演示命令 | 功能描述 | 关键参数/文件 |
---|---|---|
dnf install inotify-tools rsync -y |
安装核心工具 | inotify-tools 提供监控能力 |
vi /etc/rsyncd.conf |
配置 Rsync 服务端 | read only=no 允许写入 |
inotifywait -mrq -e create,delete,... |
监控文件事件 | -e 指定事件类型 |
rsync -azP --delete $SRC $DEST |
增量同步并删除目标多余文件 | --delete 保持严格一致 |
nohup /opt/inotify_rsync.sh & |
后台运行监控脚本 | 避免终端关闭导致进程退出 |
功能作用详解
1. 核心事件类型说明
事件类型 | 触发场景 | 同步必要性 |
---|---|---|
create |
文件/目录创建 | 必需 |
delete |
文件/目录删除 | 必需(配合 --delete ) |
modify |
文件内容修改 | 必需 |
move |
文件移动或重命名 | 必需 |
attrib |
权限/属性变更(如 chmod) | 可选 |
2. 内核参数优化
bash
# 编辑 sysctl 配置
[root@localhost ~]# vi /etc/sysctl.conf
fs.inotify.max_user_watches = 1000000 # 单进程可监控文件数
fs.inotify.max_queued_events = 32768 # 事件队列长度
fs.inotify.max_user_instances = 1024 # 最大监控实例数
# 使配置生效
[root@localhost ~]# sysctl -p