17个稳定版本 (5个主要版本)
7.2.7 | 2019年11月6日 |
---|---|
7.2.5 | 2019年7月29日 |
6.0.1 | 2019年4月22日 |
5.0.0 | 2019年4月11日 |
2.2.0 | 2018年12月25日 |
#15 in #reed-solomon
每月下载量 53次
755KB
19K SLoC
blockyarchive
Blockyarchive/blkar(发音为“bloc-kar”)是一个用Rust编写的多线程存档工具,提供位旋转保护和更容易从失败的存储设备中恢复存档数据的功能。
演示
它是如何工作的?
blkar将您的数据编码为SeqBox和EC-SeqBox存档。这两种格式都便于数据恢复,但只有EC-SeqBox提供数据修复功能。
什么是SeqBox和EC-SeqBox?
SeqBox是由Marco Pontello设计的单文件存档格式,便于在文件系统元数据损坏/缺失时进行扇区级别数据恢复,而存档本身仍作为文件系统上的正常文件存在。请访问官方SeqBox仓库以获取原始实现和此处的技术细节。
错误纠正SeqBox(简称EC-SeqBox)是由Darren Ldl为此项目开发的SeqBox的扩展版本,通过Reed-Solomon擦除码引入前向错误纠正。
Blockyarchive/blkar在重命名之前被称为rust-SeqBox/rsbx。
总体特性
- 不依赖于文件系统元数据的数据恢复(扇区级别恢复)
- 这允许在数据碎片化和顺序错乱的情况下进行数据恢复
- 支持EC-SeqBox的错误纠正(通过Reed-Solomon擦除码)
- 支持EC-SeqBox的突发(扇区)错误抵抗
- 这是通过交错块排列方案实现的。这主要是为了解决简单存档设计中数据修复的限制。
- 更复杂的存档设计,如PAR2,可以在没有任何额外排列方案的情况下修复突发错误,但它们也比EC-SeqBox复杂得多
- 多线程
- 许多日常工作中涉及的操作都编写为利用多核CPU提供高性能
- JSON模式
- 以JSON格式输出信息,而不是可读文本,便于与脚本集成
限制
- 只支持单个文件作为SeqBox和EC-SeqBox编码,因为它们都是单文件归档格式
- 然而,当您有多个文件时,blkar仍然可以使用,因为blkar在编码时支持从stdin接收输入,在解码时也支持输出到stdout
- 这意味着如果您有一个支持使用管道即时捆绑和解捆绑的归档程序,例如tar,您可以将归档程序和blkar的使用合并为一套编码和解码步骤
入门指南
安装
cargo install blkar
使用指南 & 屏幕录像 & 其他资源
维基wiki包含了全面的指南和资源。
目标和状态
由于blkar主要用作备份工具,因此代码的安全性/健壮性将优先于性能。
该项目已达到预期的功能完整性,因此不会发生针对新功能的活动开发。然而,该项目仍然受到积极维护,即我会回应PRs、问题和电子邮件,会考虑功能请求,快速响应错误报告等。
换句话说,这是一个在原始范围方面的完成项目,但它并未被遗弃。
链接
SBX格式(EC-SeqBox也在本文件中指定)
贡献
欢迎贡献。请注意,通过提交贡献,您同意根据本项目的LICENSE文件中所述的相同许可证许可您的工作。
致谢
我想感谢Marco(官方SeqBox作者)讨论并澄清了他的项目的某些方面,并在osbx的开发过程中提供了测试数据。我还想感谢他对ECSBX版本(版本17、18、19)错误纠正编号的反馈。
我想感谢Ming对文档、UX设计以及osbx项目的其他几个方面的反馈,其中大部分设计已经应用到blkar中,以及他对这个项目的进一步反馈。
进度报告文本中可读速率的设计是从Arch Linux pacman的进度条设计复制的。
RS启用版本中块集交错排列的设计受到了Thanassis Tsiodras的RockFAT设计的强烈启发。交错提供了对突发扇区错误的抵抗。
捐赠
注意:捐赠不会促进新功能的开发。如上所述,该项目旨在稳定、经过良好测试和良好维护,但我通常不会积极添加新功能到其中。
如果blockyarchive对您有帮助,并且您想为开发工作向我捐赠,您可以通过这里进行捐赠。
许可证
Libcrc代码
crcccitt代码是从libcrc中的C实现翻译而来的,并使用与libcrc相同的MIT许可证,如libcrc源代码中所述。crcccitt.c的许可证文本已复制到crc-ccitt/build.rs
、crc-ccitt/src/lib.rs
、build.rs
和src/crc_ccitt.rs
。
官方SeqBox代码
以下文件是从官方SeqBox复制的,位于测试文件夹中,并受其许可证的约束,截至撰写时为MIT许可证
- tests/SeqBox/*
所有剩余文件均根据LICENSE文件所述,在MIT许可下分发。
依赖项
~7.5MB
~137K SLoC