| Crates.io | sync-box | 
| lib.rs | sync-box | 
| version | 0.1.1 | 
| created_at | 2025-09-19 08:32:13.898326+00 | 
| updated_at | 2025-09-19 08:32:13.898326+00 | 
| description | 一个高效的目录同步工具,支持实时监听文件变化并自动同步,可通过命令行直接使用或通过配置文件管理多个同步任务。 | 
| homepage | https://github.com/ligang-code2020/syncbox | 
| repository | |
| max_upload_size | |
| id | 1846038 | 
| size | 113,890 | 
SyncBox 是一个高效的目录同步工具,支持实时监听文件变化并自动同步,可通过命令行直接使用或通过配置文件管理多个同步任务。
✨ 功能特点:
✅ 即时同步:直接指定源目录和目标目录进行一次性同步
✅ 任务运行:基于配置文件中的任务定义执行同步操作
✅ 实时监听:监控目录变化并自动触发同步,支持防抖机制
✅ 排除规则:可配置文件 / 目录排除模式,跳过不需要同步的内容
✅ 安全操作:默认不删除额外文件,支持试运行模式预览操作
✅ 校验选项:支持基于文件修改时间的快速同步和哈希校验的精确同步
✅ 详细日志:可通过环境变量控制日志级别,方便调试和问题排查
从 GitHub Releases 下载对应平台的压缩包,解压后即可使用
# 以 Linux 为例,下载并解压
curl -L https://github.com/ligang-code2020/syncbox/releases/download/v0.1.0/syncbox-linux-x86_64.tar.gz -o syncbox-linux.tar.gz
tar -zxvf syncbox-linux.tar.gz
# 赋予执行权限并全局安装
chmod +x syncbox
sudo mv syncbox /usr/local/bin/
cargo install syncbox 
若需基于源码二次开发或验证最新代码,可通过 Git 克隆仓库后编译:
# 1. 克隆源码仓库
git clone https://github.com/ligang-code2020/syncbox.git
cd syncbox
# 2. 编译 Release 版本(优化编译,生成的二进制体积更小、运行更快)
cargo build --release
# 3. 编译产物路径:target/release/syncbox(可直接执行或手动移动到 PATH 目录)
# 手动全局安装示例:
sudo mv target/release/syncbox /usr/local/bin/
# 直接同步两个目录
# 基础用法
syncbox sync <源目录> <目标目录>
# 示例
syncbox sync ./source ./target
syncbox run <任务名称> --config <配置文件路径>
# 示例
syncbox run documents --config ./syncbox.toml
syncbox watch <任务名称> --config <配置文件路径> --delay <防抖延迟毫秒数>
# 示例:监听 photos 任务,防抖延迟 1000ms
syncbox watch task --config ./syncbox.toml --delay 1000
# 试运行模式(仅预览操作,不实际修改文件)
syncbox sync ./source ./target --dry-run
# 使用哈希校验(更精确但速度较慢)
syncbox sync ./source ./target --checksum
# 同步时删除目标目录中源目录不存在的文件
syncbox sync ./source ./target --delete
# 同步时删除目标目录中源目录不存在的文件
syncbox sync ./source ./target --delete --delete-exclude "important.txt"  # 即使--delete生效,也不删除important.txt
# 排除指定模式的文件
syncbox sync ./source ./target 
--exclude "*.tmp" # 匹配所有的.tmp结尾的文件
--exclude "temp" # 匹配temp文件夹所有文件
# 显示详细操作列表
syncbox sync ./source ./target --detail
# 显示详细操作列表
syncbox sync ./source ./target --detail
同步工具通过 --exclude 参数参数指定需要排除的文件或目录,规则如下:
自动排除常见系统文件:.DS_Store、.fseventsd、.Trashes、.Spotlight-V100、.TemporaryItems 及 ._ 开头的文件
[[sync]]
name = "task"
source = "/xx/xx/xx/syncbox/source"
target = "/xx/xx/xx/syncbox/target"
exclude = [".log"]
delete_extra = true
delete_extra_exclude = [".DS_Store"]
name:任务名称(唯一标识)
source:源目录路径
target:目标目录路径
exclude:同步时需要排除的文件 / 目录模式列表
delete_extra:是否删除目标目录中源目录不存在的文件(默认 false)
delete_extra_exclude:即使 delete_extra 为 true 也不删除的文件 / 目录模式列表
✅ 支持本地目录间的文件同步
✅ 实现基于配置文件的同步任务管理
✅ 提供实时文件监听与自动同步功能
✅ 支持多种同步策略(修改时间比对 / 哈希校验)
✅ 完善的排除规则与安全操作机制
本项目采用 MIT 许可证,详情参见 LICENSE 文件。