# inotify-lvs **Repository Path**: larwas/inotify-lvs ## Basic Information - **Project Name**: inotify-lvs - **Description**: 负载均衡代码同步方案. admin_ip: 主机ip, 存放代码, 主机代码更新, 自动同步到负载机 ip: 负载机, 被同步的服务器ip - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-25 - **Last Updated**: 2026-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # inotify-lvs 基于 inotify-tools 和 rsync 的实时文件同步解决方案,适用于 LVS 集群环境下的文件实时同步需求。 ## 项目简介 inotify-lvs 是一个轻量级的实时文件同步工具,通过 Linux 内核的 inotify 机制监控文件系统变化,结合 rsync 实现高效的文件增量同步。该项目主要应用于 Linux 虚拟服务器(LVS)集群环境中,实现多节点间的文件实时同步。 ## 功能特性 - **实时监控**:使用 inotify 监听文件系统变化,自动触发同步 - **增量同步**:仅同步变更的文件,避免全量同步带来的带宽浪费 - **多节点支持**:支持配置多个目标服务器 - **灵活配置**:支持排除指定文件或目录 - **锁机制**:内置进程锁,防止重复运行 - **PHP 支持**:提供 PHP 版本的 rsync 包装脚本 ## 目录结构 ``` . ├── include.sh # 主包含脚本 ├── install_inotify_tools.sh # inotify-tools 安装脚本 ├── inotify/ # inotify 同步目录 │ ├── inotify.sh # inotify 主脚本 │ ├── rsync.php # rsync PHP 包装脚本 │ └── exclude/ # 排除规则目录 │ └── external-micro-api.exclude └── lvs/ # LVS 配置目录 ├── ssh.sh # SSH 连接脚本 ├── admin_ip # 管理 IP 配置 ├── ip # 节点 IP 列表 └── ssh_port # SSH 端口配置 ``` ## 快速开始 ### 1. 安装依赖 ```bash # 安装 inotify-tools ./install_inotify_tools.sh # ssh 密钥生成, 添加known_hosts, 同步主机公钥 ./ssh_install.sh # 或者手动安装 yum install inotify-tools -y ``` ### 2. 配置同步目标 编辑 `lvs/ip` 文件,添加目标服务器 IP(每行一个): ``` 192.168.1.101 192.168.1.102 ``` ### 3. 配置 SSH 端口 编辑 `lvs/ssh_port`,设置 SSH 端口(默认 22): ``` 22 ``` ### 4. 运行同步 ```bash cd inotify ./inotify.sh ``` ## 配置说明 ### inotify.sh 配置参数 | 参数 | 说明 | |------|------| | `plf_id` | 项目/应用 ID | | `domain` | 域名或目标路径 | | `php_cmd` | PHP 命令路径 | | `dirs` | 要监控的目录列表 | | `tmp_dir` | 临时目录路径 | ### 排除规则 在 `inotify/exclude/` 目录下创建 `.exclude` 文件,每行一个排除规则(支持通配符): ``` *.log node_modules/ .git/ ``` ## 使用示例 ### 同步 Web 集群 ```bash # 配置目标服务器 echo "192.168.1.101" > lvs/ip echo "192.168.1.102" >> lvs/ip # 配置排除规则 echo "*.log" > inotify/exclude/webapp.exclude echo "uploads/" >> inotify/exclude/webapp.exclude # 启动同步 cd inotify ./inotify.sh ``` ## 注意事项 1. 确保目标服务器 SSH 端口开放且可访问 2. 配置 SSH 密钥认证以实现免密登录 3. 合理设置排除规则,避免同步不必要的文件 4. 建议在生产环境中使用 screen 或 systemd 运行 ## 许可证 本项目仅供学习交流使用。