我们在家中有 Google Drive:关于基于默克尔树的文件共享的沉思

主要观点:想要同步文件目录且仅下载更改部分,需考虑可扩展的方式,Git 虽好但在处理大文件等方面表现不佳,Merkle 树可用于解决此问题,介绍了 Bup、Mercurial、IPLD、Dolt 等工具及其在文件同步相关方面的特点。
关键信息:

  • Git 是常用版本控制系统,但在处理大文件等方面存在不足,如存储层将大文件视为原子对象等。
  • Merkle 树通过内容寻址哈希索引对象,可快速修剪未更改数据,解决部分数据集识别问题。
  • Bup 基于 Git 存储层,对处理大文件和多文件有特殊处理,但创建增量备份仍需扫描整个目录。
  • Mercurial 用 Merkle 树跟踪文件历史,但无法去重大量相似文件,不适合极大型文件。
  • IPLD 是基于 Merkle 树的数据格式,有标准文件和目录表示方式,但不提供版本控制和高效增量备份。
  • Dolt 可用于存储关系数据,可高效处理大文件等,但目前无法挂载文件系统。
    重要细节:
  • Git 超过 90%开发者使用,但在存储层等方面存在问题。
  • Bup 拆分大文件和目录为对象树,直接写 Git 包文件等。
  • Mercurial 用不同 Merkle 树分别跟踪更改集和文件历史。
  • IPLD 用 UnixFS 表示文件和目录,有 Mutable File Systems 但实践效果不佳。
  • Dolt 可通过滚动哈希分块存储大文件,已支持任意大小 Blob 但无法挂载文件系统。
  • ZFS 和 BTRFS 用 Merkle 树存储文件和目录校验和,非去中心化应用。
阅读 8
0 条评论