思源笔记作为文件同步盘的娱乐性探讨

背景

一直在使用 onedrive 作为文件同步盘,最近有了一些加密同步的需求,就对加密同步的方式进行了一番了解,首先想到的是将文件加密后再放进 onedrive 进行同步,可以通过一些软件实现:

软件 cryptomator gocryptfs
cppcryptfs
Cryfs Duplicati 思源笔记
加密方式 文件整体加密 文件整体加密 文件分块加密 文件分块加密 文件分块加密
增量同步 不支持 不支持 支持 支持 支持
加密速度 超级慢
实时挂载 支持 支持 支持 不支持 支持
图形界面 需要安装第三方软件
文件版本控制 使用同步盘对加密文件进行版本控制 使用同步盘对加密文件进行版本控制 history 和快照
主要用途 文件加密同步 文件加密同步 文件加密同步 文件加密备份 文件加密同步
操作难度 简单 简单,但是需要额外安装 Dokany 略麻烦 简单 简单

我的主要需要是文件加密同步,不是文件加密备份,结合各项因素,最后选择了 cryptomator 来辅助 onedrive。

作为思源用户,我也将思源和这些软件做了对比,功能齐全,加密、分块速度比 Cryfs 不知道高到哪里去,结论是思源很有所为加密同步软件的潜力,不过也有一些问题需要克服,主要是文件版本控制。

思源笔记的问题

思源笔记的文件版本控制可以通过两种方式来实现:history 文件、文件快照系统。

history 方案

history 文件夹里保存了附件的历史版本,比如我使用 pdf 编辑软件对 工作空间/data/同步盘/测试文档.pdf​ 文件增加了注释,然后点击同步,则会生成备份文件:工作空间/history/2025-07-13-185305-sync/同步盘/测试文档.pdf​。

这个方案有 3 个问题:

  1. 直接保存了文件的旧版本,占用硬盘空间比较多,编辑频繁的文件会生产很多的副本,硬盘爆炸。
  2. 只会在修改附件的电脑上生成 history 文件,在另一台电脑上同步下载后,只会覆盖 工作空间/data/同步盘/测试文档.pdf​ 文件,而不会生成 history 文件,导致各台电脑上的历史版本都不全。
  3. 文件重命名则无法查找历史版本。思源没有记录新旧文件名的对应关系,文件名一旦修改,则无法通过文件名去 history 中查找历史版本。

快照系统方案

这个方案需要利用思源的快照系统,大概流程可以这样实现:

  1. 在文件管理器中选中一个文件
  2. 在文件右键菜单中选择“查看历史版本”。
  3. 遍历所有的快照索引,看看该文件在哪些索引中发生了变化,提取出变化记录。
  4. 用户选择版本后,从分块数据中还原出对应版本。

这个方案目前是实现不了的,只存在于我的设想中,存在很多问题:

  1. 没有“查看历史版本”的右键菜单。
  2. 无法获取每个快照索引里的文件列表。工作空间/repo/indexes​ 文件夹下保存了很多快照索引,每个索引中都记录了该快照中发生变化的文件的文件列表,思源在同步时会解析出文件列表,但仅限程序内部使用,没有提供相关的解析 API。
  3. 没有从分块数据中还原某个文件的接口。
  4. 文件重命名则无法查找历史版本。快照中并不会记录新旧文件名称对应关系,只会记录:删除了文件 A,新增了文件 B。由于文件 A、B 的内容相同,所以分块数据并不会发生变化,给人一种记录了文件名称变化的错觉。
  5. 思源笔记会自动清理本地快照,导致历史版本减少。思源从 3.1.13 版本开始会自动清理本地数据仓库:
    PixPin_2025-07-14_13-45-48
    不过可以通过设置进行调整,以保留更多的快照:
    PixPin_2025-07-14_13-46-52
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28446 引用 • 119783 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...