当前位置: 首页 > news >正文

三十四、【Linux常用工具】rsync+inotify实时同步演示

实时同步演示

    • 技术架构全景
    • 核心组件详解
      • 1. inotify 内核子系统
      • 2. Rsync 高效同步工具
    • 实践演示
      • 一、环境准备与安装
        • 1. 检查内核支持
        • 2. 安装 inotify-tools
      • 二、配置 Rsync 服务端(目标机)
        • 1. 创建 Rsync 配置文件
        • 2. 启动 Rsync 守护进程
      • 三、配置实时同步脚本(源机)
        • 1. 创建同步脚本
        • 2. 设置权限并启动
      • 四、测试与验证
      • 命令总结表格
      • 功能作用详解
      • 1. 核心事件类型说明
      • 2. 内核参数优化

技术架构全景

inotify监控
触发同步
数据存储
日志记录
日志记录
源服务器
文件系统事件
Rsync传输
目标服务器
备份目录
同步日志

核心组件详解

1. inotify 内核子系统

  • 功能:监控文件系统事件
  • 内核支持:Linux 2.6.13+
  • 监控能力:
    • 单进程监控文件数:默认8192(可调优)
    • 事件队列长度:默认16384(可调优)
    • 响应延迟:毫秒级

2. Rsync 高效同步工具

特性优势适用场景传输效率
增量同步仅传输变化部分大文件同步极高
压缩传输减少带宽占用跨网络同步
校验机制数据一致性保证关键数据备份可靠
权限保持保留文件属性系统迁移完整

实践演示

一、环境准备与安装

1. 检查内核支持
[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
# 启用 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 配置文件
[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 守护进程
[root@localhost ~]# systemctl enable --now rsyncd
[root@localhost ~]# ss -tunlp | grep 873
tcp  LISTEN 0 5  *:873  *:*  users:(("rsync",pid=1234))

三、配置实时同步脚本(源机)

1. 创建同步脚本
[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
dorsync -azP --delete "$SRC" "$DEST" >> "$LOG" 2>&1echo "[$(date +'%F %T')] $file 事件: $event" >> "$LOG"
done
2. 设置权限并启动
[root@localhost ~]# chmod +x /opt/inotify_rsync.sh
[root@localhost ~]# nohup /opt/inotify_rsync.sh &  # 后台运行

四、测试与验证

# 在源目录创建测试文件
[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. 内核参数优化

# 编辑 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
http://www.dtcms.com/a/306748.html

相关文章:

  • rsync+sersync实现文件实时同步
  • 防火墙与入侵检测
  • 聊聊如何判断发现的缺陷属于前后端
  • 一洽客服系统:Web路由策略
  • LSM树Python实现深度解析:从理论到实战的全方位探索
  • Chroma安装教程
  • PCB学习笔记(一)
  • Python 程序设计讲义(42):组合数据类型——元组类型:创建元组
  • AI Agent管理后台原型设计全拆解(附3套可复用素材)
  • 达梦(DM8)常用管理SQL命令(1)
  • python可视化:按序号展示社团星级分布 - 热力图样式
  • Vulnhub靶场:ica1
  • VUE -- 基础知识讲解(二)
  • 《Java 程序设计》第 11 章 - 泛型与集合
  • 迪丽热巴写真壁纸
  • 【38】WinForm入门到精通 ——WinForm平台为AnyCPU 无法切换为x64,也无法添加 x64及其他平台
  • Apache Ignite 中如何配置和启用各类监控指标
  • 还在使用Milvus向量库?2025-AI智能体选型架构防坑指南
  • 【dify+milvus避坑指南】将向量库milvus集成给dify作为知识库
  • 基于深度学习的医学图像分析:使用DeepLabv3+实现医学图像分割
  • (LeetCode 每日一题) 2419. 按位与最大的最长子数组(数组)
  • leetcode 2419. 按位与最大的最长子数组 中等
  • 构建全球化:OMS系统赋能业财与订单一体化
  • linux更新内核启动镜像文件命令(sudo update-initramfs -u)的作用
  • 如何本地运行 HTML 文件并通过 IP 访问
  • Win10下python环境变量呼出微软应用商店
  • 2025Nacos安装Mac版本 少走弯路版本
  • MySQL设置为严格模式
  • 使用HaiSnap做了一款取件码App(一键生成)
  • PCB基础知识