Files
sanguo_quant_live/management/sanguo_auto_sync/AUTO-SYNC-MANAGEMENT.md
T
2026-03-26 11:06:14 +08:00

158 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 自动同步监控系统管理指南
## 系统概述
这是一个基于文件变化监控的自动Git同步系统,监听 `/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live` 目录,当任何文件变化时自动执行双向git同步。
**当前使用方案:fswatch 实时监控** (基于 macOS 内核 FSEvents)
## 核心组件
1. **监控器** (`file-watcher.sh`) - Bash脚本,使用 fswatch 监控文件系统事件
2. **启动脚本** (`start-watcher.sh`) - 启动监控器为后台守护进程
3. **停止脚本** (`stop-watcher.sh`) - 停止监控器
4. **状态脚本** (`status-watcher.sh`) - 检查监控器状态
5. **同步脚本** (`auto-sync.sh`) - 执行git拉取、添加、提交、推送
## 可用方案对比
| 方案 | 机制 | 响应速度 | 资源占用 | 依赖 |
|------|------|----------|----------|------|
| **fswatch** (当前) | 内核事件通知 | **实时 (< 3秒)** | **极低** | 需要 `brew install fswatch` |
| simple-file-watcher | 轮询遍历 | 1分钟 | 中等 | Python 3 (无需额外依赖) |
## 使用方法
### 启动监控器
```bash
cd management/sanguo_auto_sync
./start-watcher.sh
```
### 停止监控器
```bash
./stop-watcher.sh
```
### 检查状态
```bash
./status-watcher.sh
```
### 查看监控日志
```bash
tail -f /Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/file-watcher.log
```
### 查看同步日志
```bash
tail -f /Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/auto-sync.log
```
## 文件变化触发流程
```
文件创建/修改/删除
fswatch 内核事件通知 (毫秒级)
监控器检测到变化,防限流等待1秒
执行 auto-sync.sh
1. git pull origin main (拉取远程变更)
2. git add . (添加所有变更)
3. git commit -m "auto-sync: ..." (提交)
4. git push origin main (推送)
完成同步,等待下次变化
```
## 技术细节
### 监控器特性
- **实时事件驱动** - 无需轮询,文件变化立即响应
- **忽略文件**`.log`, `.pyc`, `.tmp`, `~` (临时文件)
- **忽略目录**`.git`, `venv`, `.venv`, `__pycache__`, `node_modules`
- **防重复执行**:使用锁文件 `/tmp/sanguo_sync.lock`,避免频繁触发
- **限流保护**:同步后等待1秒,合并批量变化
- **日志记录**`/.../file-watcher.log`
### 同步脚本特性
- 自动处理未跟踪文件
- **删除检测**:支持文件删除同步
- 错误处理:推送失败重试2次
- 日志记录:`auto-sync.log`
- 防冲突:先pull再push,避免冲突
### PID管理
- PID文件:`management/sanguo_auto_sync/watcher.pid`
- 自动清理:停止时删除PID文件
- 状态检查:通过PID验证进程运行状态
## 故障排除
### 监控器没有启动
1. 检查 fswatch 是否安装:`which fswatch`
2. 如果未安装:`brew install fswatch`
3. 检查脚本权限:`chmod +x file-watcher.sh`
4. 检查日志:`tail -f file-watcher.log`
### 同步失败
1. 检查网络连接
2. 检查Git配置:`git remote -v`
3. 检查Git权限:确保有推送权限
4. 查看错误日志:`tail -f auto-sync.log`
### 文件变化未触发同步
1. 检查监控器是否运行:`./status-watcher.sh`
2. 检查文件是否被忽略(参考上面的忽略列表)
3. 检查锁文件:如果 `/tmp/sanguo_sync.lock` 存在且同步正在进行,等待完成
## 回退方案
如果 fswatch 不可用,可以回退到 Python 轮询方案:
```bash
./stop-watcher.sh
./start-simple-watcher.sh
```
## 系统集成
### 开机自启动
可以将以下命令添加到crontab或launchd以实现开机自启动:
```bash
cd "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/management/sanguo_auto_sync" && ./start-watcher.sh
```
### 与其他系统集成
- 可以与CI/CD系统集成
- 可以扩展为多目录监控
- 可以添加通知功能(邮件、Slack、Feishu等)
## 性能考虑
- **fswatch 基于内核事件**,几乎不占用CPU,大部分时间休眠
- 忽略虚拟环境和缓存目录,避免无效事件触发
- 同步脚本有防重复执行机制,避免频繁触发
## 安全注意事项
1. 确保 `.gitignore` 正确配置,不提交敏感信息
2. 监控器在后台运行,确保有适当权限
3. 同步脚本会推送所有变更,确保不推送机密数据
## 维护
- 定期清理日志文件
- 监控磁盘空间
- 检查Git仓库健康状态
## 变更日志
| 日期 | 变更 | 作者 |
|------|------|------|
| 2026-03-26 | 切换到 fswatch 实时监控方案 | 诸葛亮 |
| 2026-03-26 | 修复删除文件检测问题 | 诸葛亮 |
| 2026-03-26 | 添加虚拟环境目录忽略 | 诸葛亮 |
| 2026-03-26 | 初始版本 Python 轮询方案 | - |