我的密码库同步方案最近遇到了一个尴尬局面。iPhone上用KeePassium,配合WebDAV自建云同步,一切顺畅。但转到Linux或FreeBSD桌面,KeePassXC直接甩手——同步?自己想办法。

这时候通常会有人推荐Syncthing。确实能用,但坦白说:一个Go写的服务,单节点就要吃掉400MB内存。在眼下这个内存比黄金贵的年代,这账怎么算都不划算。

打开网易新闻 查看精彩图片

Git也被提过。可我的主密码库快2MB了,KeePass每次改动都是整文件重写,git仓库的膨胀速度想想就头疼。Rsync?双向同步的冲突处理能把人逼疯。

几十年*nix文件操作史,答案难道只能是这些"重量级选手"?

搜索轻量级文件同步工具时,大部分结果都是死胡同。直到Unison冒出来。

这个名字我其实认识很多年了——早年试过它的GUI版本,五分钟就被劝退,再也没碰过。现在被迫重新捡起来。

Unison的定位很直白:POSIX系统(*BSD、GNU/Linux、macOS)和Windows之间的文件同步。两台主机各自维护一份文件副本,独立修改,再通过传播变更实现同步。1998年诞生,比不少读者的码龄还长。

老派软件有个特点:文档极其详尽。Unison的手册厚得像本小书,跟Bacula官方文档一个风格——对在乎用户的开发者来说,这是基本功。但对只想快速解决问题的人来说,也是灾难。

我的目标很明确:不用SSH这种重型依赖,让Unison直接跑在socket上。文档确实提到了socket模式,但附赠了一段恐吓式警告——

TCP socket方式不安全:变更内容以明文传输,且任何人均可连接服务器进程读取文件系统内容。仅面向有特定需求的专家用户,其他人请用SSH。

巧了,我正好自认是"有特定需求的专家用户"。

具体需求列一下:同步整个目录(可能包含多个KeePass数据库文件)、不允许冲突、内存占用要低、配置要简单。接下来就是看这个1998年的老东西,能不能在2024年的内存危机里,交出一份比Syncthing更轻的答卷。