Appearance
rsync + inotify 实时文件同步工具
一条命令完成所有配置,支持本地服务器和备份服务器两种角色。
核心概念(重要!)
┌─────────────────────────────────┐ ┌─────────────────────────────────┐
│ 本地服务器(数据源) │ │ 备份服务器(接收端) │
│ │ │ │
│ • 监听文件变化 │ │ • 接收推送的文件 │
│ • 文件变化后自动推送 │ ──────▶ │ • 提供 rsync 服务 │
│ • 运行【模式1】 │ │ • 运行【模式2】 │
│ │ │ │
│ 示例: 192.168.1.10 │ │ 示例: 192.168.1.20 │
└─────────────────────────────────┘ └─────────────────────────────────┘
数据流向:本地服务器 ──推送──▶ 备份服务器快速开始
第一步:在备份服务器上运行
sh
# 下载脚本
curl -O https://your-server/rsync-inotify-sync.sh
chmod +x rsync-inotify-sync.sh
# 执行脚本
./rsync-inotify-sync.sh选择 【模式 2:备份服务器】
第二步:在本地服务器上运行
sh
# 下载脚本
curl -O https://your-server/rsync-inotify-sync.sh
chmod +x rsync-inotify-sync.sh
# 执行脚本
./rsync-inotify-sync.sh选择 【模式 1:本地服务器】,输入备份服务器显示的连接信息。
配置说明
直接回车 = 使用默认值
每个配置项都有默认值,直接按回车即可使用:
► 备份服务器 IP [192.168.1.100]: █
↑
直接回车使用这个默认值配置示例
场景:将 Web 服务器文件实时同步到备份服务器
备份服务器 (192.168.1.20) 配置:
第 1 步:选择部署模式
═══════════════════════════════════════════════════════════════
【模式 1:本地服务器(数据源)】
角色说明:这台服务器是数据的【来源】,文件变化后自动推送到备份服务器
...
【模式 2:备份服务器(接收端)】
角色说明:这台服务器是数据的【目的地】,被动接收其他服务器推送的文件
...
► 请选择 [1/2]: 2
[✓] 已选择:备份服务器(接收端)
→ 这台服务器将接收其他服务器推送的文件
第 3 步:配置备份服务器参数
═══════════════════════════════════════════════════════════════
【模块名称】
说明: 定义一个模块名,本地服务器通过此名称连接
示例: backup、www、webdata
注意:模块名不是路径!
✓ 正确: backup
✗ 错误: /www/backup/
► 模块名称 [backup]: webdata ← 输入模块名
【文件存储目录】
说明: 接收本地服务器推送过来的文件的存储目录
► 存储目录 [/data/backup/]: ← 直接回车使用默认值
【服务端口】
► 服务端口 [873]: ← 直接回车使用默认值
【认证用户名】
► 认证用户名 [rsync_backup]: ← 直接回车使用默认值
【认证密码】
► 认证密码: ****** ← 输入密码
► 确认密码: ******
【允许连接的 IP】
► 允许的 IP [192.168.0.0/16]: 1.10.10.0/24 ← 输入允许的网段
第 4 步:生成配置文件
[✓] 密码文件: /etc/rsyncd.secrets
[✓] 配置文件: /etc/rsyncd.conf
第 5 步:配置防火墙
配置 iptables... 完成
第 6 步:启动 rsync 服务
[✓] rsync 服务已启动 (daemon)
═══════════════════════════════════════════════════════════════
安装完成!
═══════════════════════════════════════════════════════════════
✓ 备份服务器接收服务已成功部署
本地服务器连接信息(配置本地服务器时需要填入)
├─ 备份服务器 IP: 192.168.1.20 ← 记住这个!
├─ 服务端口 : 873
├─ 模块名称 : webdata ← 记住这个!
├─ 认证用户名 : rsync_backup
└─ 认证密码 : (您刚才设置的密码)本地服务器 (192.168.1.10) 配置:
第 1 步:选择部署模式
═══════════════════════════════════════════════════════════════
► 请选择 [1/2]: 1
[✓] 已选择:本地服务器(数据源)
→ 这台服务器上的文件变化将自动推送到备份服务器
第 3 步:配置本地服务器参数
═══════════════════════════════════════════════════════════════
【备份服务器 IP 地址】
说明: 文件要推送到的目标服务器 IP(即运行【模式2】的服务器)
► 备份服务器 IP [192.168.1.100]: 192.168.1.20 ← 输入备份服务器IP
【备份服务器 rsync 端口】
► rsync 端口 [873]: ← 直接回车
【备份服务器模块名称】
► 模块名称 [backup]: webdata ← 输入模块名
【本地同步目录】
► 本地同步目录 [/data/backup/]: /var/www/html/ ← 输入要同步的目录
【rsync 认证用户名】
► 认证用户名 [rsync_backup]: ← 直接回车
【rsync 认证密码】
► 认证密码: ****** ← 输入备份服务器设置的密码
► 确认密码: ******
【监听事件类型】
► 监听事件 [modify,delete,create,attrib,move]: ← 直接回车
【rsync 传输参数】
► rsync 参数 [-azP --delete]: ← 直接回车
【排除文件/目录】
► 排除规则(直接回车不排除): *.log ← 排除日志文件
═══════════════════════════════════════════════════════════════
配置摘要
═══════════════════════════════════════════════════════════════
备份服务器: 192.168.1.20:873
模块名称 : webdata
本地目录 : /var/www/html/
认证用户 : rsync_backup
监听事件 : modify,delete,create,attrib,move
同步参数 : -azP --delete
排除规则 : *.log
确认以上配置? [Y/n]: y ← 确认
═══════════════════════════════════════════════════════════════
安装完成!
═══════════════════════════════════════════════════════════════
✓ 本地服务器同步服务已成功部署
文件变化将自动推送到备份服务器常用命令
sh
# 查看服务状态
./rsync-inotify-sync.sh status
# 查看同步日志
./rsync-inotify-sync.sh logs
# 重启服务
./rsync-inotify-sync.sh restart
# 卸载
./rsync-inotify-sync.sh uninstall常见问题
1. 连接失败
检查以下几点:
- 备份服务器 rsync 服务是否启动:
systemctl status rsyncd - 防火墙是否开放 873 端口
- 模块名是否正确(不是路径)
- 用户名密码是否一致
2. 模块名称错误
错误:输入了路径如 /www/backup/
正确:输入模块名如 webdata
模块名是在备份服务器的 /etc/rsyncd.conf 中定义的 [模块名]
3. 日志显示 name lookup failed
这个警告不影响同步功能。如果想消除,在备份服务器添加 hosts 映射:
sh
echo "1.10.10.54 local-server" >> /etc/hosts或在 /etc/rsyncd.conf 全局配置中添加:
reverse lookup = no然后重启服务:systemctl restart rsyncd
4. 验证同步是否正常
在本地服务器创建测试文件:
sh
echo "test" > /var/www/html/test.txt在备份服务器检查:
sh
ls -la /data/backup/
# 应该能看到 test.txt文件位置
| 文件 | 本地服务器 | 备份服务器 |
|---|---|---|
| 配置文件 | /opt/rsync-sync/sync.conf | /etc/rsyncd.conf |
| 密码文件 | /etc/rsync.password | /etc/rsyncd.secrets |
| 日志文件 | /opt/rsync-sync/sync.log | /var/log/rsyncd.log |
注意事项
- 需要 root 权限运行
- 先配置备份服务器,再配置本地服务器
- 模块名不是文件路径
- 两边的用户名和密码必须一致
- 这是单向同步:本地服务器 → 备份服务器

