高性能文件同步与备份工具,支持本地存储、WebDAV、S3 等多种存储后端。
 |
 |
| 主界面 |
任务配置 |
 |
 |
| 差异分析 |
同步进度 |
 |
 |
| 冲突处理 |
设置 |
 |
| 差异分析 |
- 多存储后端: 本地文件系统、WebDAV(坚果云、123云盘)、S3 兼容存储(AWS、MinIO、阿里云 OSS、七牛云)
- 灵活同步: 支持任意存储组合(本地↔本地、本地↔远程、远程↔远程)
- 同步模式:
- 双向同步 ↔ 源和目标双向同步
- 镜像同步 → 源完全复制到目标,删除多余文件
- 备份同步 → 仅从源复制新增/修改到目标
- 智能缓存: 远程存储文件列表缓存(可配置 0-2 小时),本地存储直接扫描
- 高性能: 可配置并行传输数(1-128),增量同步,可配置块大小流式传输
- 大文件支持: 支持 4GB+ 超大文件传输,可配置分块大小和流式阈值
- 冲突处理: 双向同步时支持手动选择保留源/目标/两者/跳过
- 同步预览: 同步前差异分析,显示将要执行的操作
- 现代 UI: 深色/浅色主题,实时进度显示,速度和 ETA 统计
| 类别 |
技术 |
| 前端 |
React + TypeScript + TailwindCSS |
| 后端 |
Rust + Tauri 2.0 |
| 数据库 |
SQLite (sqlx) |
| 存储抽象 |
OpenDAL + reqwest |
| 哈希校验 |
blake3 |
| 异步运行时 |
Tokio |
- Windows 10/11 (64-bit)
- 约 50MB 磁盘空间
npm install
npm run tauri dev
产物位于 src-tauri/target/release/bundle/
SyncTools/
├── src/ # 前端 React
│ ├── components/ # UI 组件
│ ├── hooks/ # 自定义 Hooks
│ └── lib/ # 工具函数、状态管理、类型定义
├── src-tauri/ # 后端 Rust
│ ├── src/
│ │ ├── commands/ # Tauri 命令
│ │ ├── core/ # 同步引擎、缓存、冲突处理
│ │ ├── db/ # 数据库模型
│ │ └── storage/ # 存储后端 (Local/S3/WebDAV)
│ └── migrations/ # 数据库迁移
└── package.json
默认位置: %APPDATA%/synctools/(可在设置中修改)
synctools.db - 任务配置、同步历史、文件状态
config.json - 应用配置(日志、缓存 TTL 等)
cache/ - 远程存储文件列表缓存
app.log - 应用日志(可配置大小限制)
- 本地 ↔ 本地: 直接文件复制
- 本地 ↔ 远程: 分块流式传输,实时进度显示
- 远程 ↔ 远程: 数据经本地内存中转(源 → 内存 → 目标)
针对大文件传输场景,实现了可配置的分块流式传输方案:
| 文件大小 |
传输方式 |
内存占用 |
| ≤ 阈值(默认 128MB) |
直接内存传输 |
文件大小 |
| > 阈值 |
分块流式传输 |
仅分块大小(默认 8MB) |
技术特点:
- 可配置分块大小(1-32MB),减少系统调用开销
- 可配置流式传输阈值(64MB-1GB)
- 流式 HTTP PUT,真实网速进度显示
- blake3 哈希校验,确保数据完整性
- 临时文件自动清理
注意: 远程到远程同步时,文件数据会加载到内存中转,大文件建议使用本地中转。
| 字段 |
值 |
| Bucket |
空间名称(如 my-bucket) |
| Region |
区域代码(如 cn-north-1) |
| Endpoint |
http://s3-cn-north-1.qiniucs.com |
| Access Key |
AK |
| Secret Key |
SK |
| 字段 |
值 |
| Bucket |
Bucket 名称 |
| Region |
oss-cn-hangzhou 等 |
| Endpoint |
https://oss-cn-hangzhou.aliyuncs.com |
| Access Key |
AccessKey ID |
| Secret Key |
AccessKey Secret |
| 选项 |
说明 |
默认值 |
| 并行传输数 |
同时传输的文件数 |
4 |
| 自动创建目录 |
目标不存在时自动创建 |
开启 |
| 远程缓存过期 |
远程存储文件列表缓存时间 |
30 分钟 |
| 分块大小 |
流式传输的块大小 |
8 MB |
| 流式传输阈值 |
启用流式传输的文件大小阈值 |
128 MB |
| 启用日志 |
记录应用日志到文件 |
开启 |
| 日志大小限制 |
单个日志文件最大大小 |
5 MB |
MIT License
ASLant