sync-box 0.1.2

一个高效的目录同步工具,支持实时监听文件变化并自动同步,可通过命令行直接使用或通过配置文件管理多个同步任务。
Documentation
# 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. **可靠**: 完善的错误处理和日志记录

## 使用场景
- 开发者本地文件同步
- 文档和代码备份
- 多设备间文件同步
- 自动化部署前的文件准备

这个项目是一个功能完整、设计良好的文件同步工具,具有很好的可扩展性和维护性。