基于系统 git 的跨平台文件夹双向同步工具。双击即用,托盘常驻,自动提交、合并、冲突处理,完全无感。
把任意本地文件夹变成自动同步的 git 仓库——本地改动自动提交推送,其他设备的改动自动 rebase 合并,冲突按策略自动处理且零丢失。双击 exe 弹配置窗口,填好多任务后最小化到托盘,后台定时同步,右键手动触发。
- 托盘常驻:双击启动 → 配置窗口 → 后台托盘定时同步,右键手动同步 / 暂停。开机自启一键开关。
- 多任务:一份配置管多个文件夹,各自独立状态与锁。
- 双向同步:本地 ⇄ 远程自动一致,rebase 合并非冲突分叉。
- 冲突零丢失:三策略——
local_wins备份远程旧版本到分支可恢复、remote_wins重置、abort中止。强推一律--force-with-lease。 - 真正无感:成功静默,仅初始化 / 冲突 / 失败弹系统通知。
- 开箱健壮:网络操作指数退避重试、单实例锁防并发、备份分支自动清理。
- dry-run 预览:只读输出同步计划,不联网不改仓库。
- 自有图标:托盘 / 窗口 / exe 自有 SVG 图标,位置无关、可装只读目录。
# 构建(需 Go 1.26+ 与系统 git;托盘版需 CGO + gcc,用 -tags traygui)
make build # Windows 托盘版(单 exe,无控制台,双击出窗口)
make build-cli # 纯 Go CLI 版(无托盘,快速 / 跨平台)
# 双击 AutoSync.exe → 配置窗口增删任务 → 关闭即缩至托盘 → 后台定时同步
autosync # 启动托盘守护(双击等同,弹窗口)
autosync install # 开机自启(写注册表 Run 键,后台静默)
autosync sync --dry-run # CLI 一次性只读预览
# macOS:菜单栏守护(Swift MenuBarExtra 壳 + Go 引擎子进程,须 macOS 主机)
make build-macos-app # 产 dist/AutoSync.app(需 xcodegen + Xcode,见 macos/README-install.md)
# Linux:daemon 守护 + systemd 自启(无 GUI,对齐 Syncthing/Rclone)
make package-linux # 产 dist/autosync-linux-{amd64,arm64}.tar.gz
# 解压 tarball → bash install-linux.sh → 编辑 ~/.config/AutoSync/autosync.conf.yaml
autosync daemon # 前台多任务守护(systemd 即调用此命令)
autosync install # 注册 systemd user service 开机自启配置与 byproduct(日志/状态/锁)统一在各平台原生数据目录,exe 位置独立——可装进 Program Files、可在任意位置双击。可用 AUTOSYNC_DATA_DIR 覆盖。
| 平台 | 数据目录 |
|---|---|
| Windows | %AppData%\AutoSync |
| macOS | ~/Library/Application Support/AutoSync |
| Linux | ~/.config/AutoSync |
<数据目录>/
autosync.conf.yaml # 多任务配置(daemon/托盘共用,Linux 手编 / Win/macOS GUI 管理)
config.yaml # CLI 单任务配置
logs/ state/ locks/
flowchart TB
EXE[autosync.exe 双击] --> APP[托盘守护 TrayApp]
APP --> WIN[配置窗口 多任务 CRUD] & MENU[托盘菜单 手动/暂停/自启]
APP --> SCHED[TaskScheduler 每任务 ticker]
SCHED --> RUN[TaskRunner]
RUN --> SYNC[Syncer 状态机]
SYNC -->|shell out| GIT[(系统 git)]
RUN --> STATE[每任务 state] & NOTIFY[系统通知]
REG[注册表 Run 键] -->|登录自启| APP
Syncer 依赖 GitOperator 接口(依赖倒置),shell out 调系统 git,不内嵌 git 库。托盘用 Fyne(构建标签 traygui 隔离,默认构建纯 Go)。Linux 走 daemon 子命令 + systemd user service(无 GUI)。详见 docs/tech.md。
| 平台 | 同步核心 | 守护 | 开机自启 |
|---|---|---|---|
| Windows | ✅ | ✅ Fyne 托盘 | ✅ 注册表 Run 键 |
| macOS | ✅ | ✅ MenuBarExtra(Swift 壳) | ✅ SMAppService |
| Linux | ✅ | ✅ daemon 守护(无 GUI) | ✅ systemd 自启 |
prd · tech · api · flow · TODO · plan
后续:实时文件监听、HTTPS token 引导、连续失败降噪、托盘状态回显、macOS 代码签名公证、daemon 运行时控制(手动同步/暂停 IPC)。
完整方向见 docs/TODO.md。