# maxpack:版本化文件集的高效重复数据删除
maxpack 的跨文件重复数据删除将整个文件集视为单一数据空间,消除版本和对象间的重复内容。在 100 MB 的 Node.js 数据上,压缩比达 3.9 倍;在 10 GB 数据上,通过将每兆字节的唯一内容降至 0.6%,压缩比高达 50.1 倍。该工具专为数据重叠度高的场景设计。
实际应用场景
maxpack 在重复内容多的数据集上表现卓越:
- Git 项目版本:共享代码仅存储一次。
- 日志和数据库导出:相邻导出差异极小。
- 区块链节点快照:数据库状态高度重叠。
- 版本化数据集:模型检查点、图像文件。
- 虚拟机和容器快照:共享状态层。
- 前端构建产物:文件名含哈希但字节级匹配。
数据量越大、重复率越高,效果越显著。
Node.js v20 基准测试
在 Apple M4 上使用 4 线程测试。通过 Git 标签从 100.1 MB 扩展至 10 GB:
- 初始阶段,所有方法压缩比约 3.9 倍。
- maxpack L3 在 10 GB 上:50.1 倍。
- tar+zstd:约 4.8 倍。
- 7z:约 8.6 倍。
唯一内容占比下降,让 maxpack 压缩效果大幅提升。
CPython 3.12 测试结果(817.3 MB,8 个标签)
| 方法 | 归档大小 | 压缩比 | 打包时间 | 解包时间 |
|-----------------|----------|--------|----------|----------|
| maxpack L3 | 31.0 MB | 26.4x | 0.9 s | 3.1 s |
| tar+zstd -3 | 215.3 MB | 3.8x | 16.5 s | 11.9 s |
| tar+zstd -19 | 170.3 MB | 4.8x | 113.7 s | 17.0 s |
| tar+xz | 168.3 MB | 4.9x | 41.6 s | 13.7 s |
与 tar+zstd -3 相比,maxpack 归档大小减小 7 倍,打包解包速度更快。
Go 1.23 测试结果(974.8 MB,8 个标签)
| 方法 | 归档大小 | 压缩比 | 打包时间 | 解包时间 |
|-----------------|----------|--------|----------|----------|
| maxpack L3 | 31.0 MB | 31.4x | 14.4 s | 14.7 s |
| tar+zstd -3 | 210.1 MB | 4.6x | 40.5 s | 35.1 s |
| tar+xz | 149.5 MB | 6.5x | 294.0 s | 40.5 s |
| 7z -mx=9 | 70.7 MB | 13.8x | 312.4 s | 11.4 s |
归档大小比 7z 小 2.3 倍,打包 CPU 消耗更低。
在 fd、lsd、bat 等项目上,体积缩减 41.6–70.3%,重复数据删除率高达 81.3%。
控制数据集测试
高重复数据集(100 个文件,90% 重复,12 MB):
| 数据集 | 方法 | 归档大小 | 压缩比 | 与 tar+zstd-3 比较 |
|-----------|--------------|------------|--------|-------------------|
| 高重复 | tar+zstd-3 | 4,102,948 | 3.1x | – |
| 高重复 | maxpack L3 | 1,290,154 | 10.0x | -68.6% |
归档大小缩小 3.2 倍。无重复数据集上,性能持平或略有开销。
速度对比
解包速度快 1.5–2.2 倍:
- 多样化解包:maxpack 21 ms vs 32 ms。
- 高重复解包:29 ms vs 65 ms。
- 大型解包:71 ms vs 120 ms。
打包速度依数据结构而定:重复数据持平,唯一数据略有开销。
使用限制
- 唯一数据:重复删除效果有限。
- 小型数据集:分析成本过高。
- 随机访问:不如专用存储方案。
适用于重叠度强的版本化数据集。
与竞品的定位对比
maxpack 融合了打包和快照系统的优势:
| 特性 | tar+zstd/7z | borg/restic | maxpack |
|------------------|-------------|-------------|---------|
| 重复数据删除 | 无 | 按块 | 有 |
| 固实压缩 | 有 | 无 | 有 |
| 输出形式 | 单文件 | 仓库 | 单文件 |
| 增量性 | 无 | 有 | 追加 |
| 加密 | 视情况 | 有 | AES-256-GCM |
适合便携式版本归档。
在你的数据上测试
maxpack pack your_data/ -o test.maxpack
tar cf - your_data/ | zstd -3 > test.tar.zst
ls -lh test.maxpack test.tar.zst
关键亮点
- 版本化数据压缩比随体积增长高达 50 倍以上。
- 高重复数据集重复删除率达 90%。
- 解包速度比 tar+zstd 快 1.5–2.2 倍。
- 真实项目归档比竞品小 2–7 倍。
- 支持增量备份和 AES-256-GCM 加密。
— Editorial Team
暂无评论。