← 中文资源

简体中文版本

构建快照目录式的增量备份工具

内容定义分块的增量备份:块只存一次、逐快照清单、任意快照字节级精确恢复与验证、修剪无引用块。

阅读英文原文

目标

构建把文件切分为内容定义块、每块按 SHA-256 只存一次、逐快照记录清单、能字节级精确恢复任意快照并修剪无引用块的备份工具。

要点

固定大小分块在插入一个字节后全部边界漂移,滚动哈希让边界由内容决定、一次插入至多移动一个边界;清单是不可变的 JSON(路径、权限、逐块摘要序列),恢复是“清单加存储”的纯函数;verify 重算每个块摘要把静默位腐化为点名告警。

提示

去重不是附加功能而是内容寻址的推论;修剪只是对清单的引用计数。

验证

分块器测试验证前插一字节后边界集合几乎不变;往返测试恢复含空文件与符号链接的整树并逐树哈希比对。 项目目录骨架:

incbackup/
├── bin/incbackup.js
├── src/
│   ├── chunker.js
│   ├── store.js
│   ├── manifest.js
│   └── commands/
│       ├── snapshot.js
│       ├── restore.js
│       ├── verify.js
│       └── prune.js
├── test/
│   ├── chunker.test.js
│   └── roundtrip.test.js
└── package.json

实施阶段:Content-defined chunker → Content-addressed store and manifest → Restore → Verify and prune。