# SyncBox 项目 Agent 报告
## 项目概述
SyncBox 是一个用 Rust 编写的简单、可靠的文件同步工具,专为开发者设计。它支持多种同步模式,包括一次性同步、配置文件驱动的同步任务和实时文件监听同步。
## 核心功能模块
### 1. CLI 命令行接口 (src/cli/mod.rs)
- 提供三个主要命令:
- `sync`: 直接同步两个目录
- `run`: 根据配置文件执行同步任务
- `watch`: 监听目录变化并实时同步
### 2. 配置管理 (src/config/mod.rs)
- 使用 TOML 格式配置文件 (syncbox.toml)
- 支持定义多个同步任务
- 每个任务可配置源目录、目标目录、排除规则和删除额外文件选项
### 3. 同步引擎 (src/sync/mod.rs)
这是项目的核心模块,包含以下子模块:
#### 3.1 扫描器 (Scanner)
- 递归遍历目录收集文件信息
- 支持排除规则过滤文件
#### 3.2 过滤器 (Filter)
- 判断文件是否应该被排除
- 比较源文件和目标文件决定是否需要同步
#### 3.3 文件操作 (FileOps)
- 文件复制(自动创建目标目录)
- 删除目标目录中多余的文件
#### 3.4 同步逻辑 (SyncLogic)
- 执行完整的目录同步流程
- 支持试运行模式(dry run)
- 支持删除额外文件选项
#### 3.5 监听器 (Watcher)
- 实时监听文件系统变化
- 使用防抖机制避免频繁同步
- 基于操作系统的原生文件监听API
### 4. 基础设施 (src/infra/)
#### 4.1 错误处理 (error.rs)
- 定义专门的同步错误类型
- 使用 thiserror crate 提供结构化错误
#### 4.2 日志系统 (logging.rs)
- 基于 tracing crate 的日志系统
- 支持通过环境变量控制日志级别
## 技术栈
- **语言**: Rust
- **主要依赖**:
- clap: 命令行参数解析
- tokio: 异步运行时
- serde/toml: 配置文件序列化
- notify: 文件系统监听
- tracing: 日志系统
- thiserror: 错误处理
## 项目特点
1. **安全**: 默认不删除额外文件,支持试运行模式
2. **高效**: 基于文件修改时间的增量同步
3. **灵活**: 支持多种排除规则和同步策略
4. **实时**: 文件监听模式支持防抖机制
5. **可靠**: 完善的错误处理和日志记录
## 使用场景
- 开发者本地文件同步
- 文档和代码备份
- 多设备间文件同步
- 自动化部署前的文件准备
这个项目是一个功能完整、设计良好的文件同步工具,具有很好的可扩展性和维护性。