5 个不稳定版本
0.5.1 | 2024 年 8 月 1 日 |
---|---|
0.5.0 | 2024 年 7 月 22 日 |
0.4.1 | 2024 年 7 月 1 日 |
0.4.0 | 2024 年 6 月 11 日 |
0.3.0 | 2024 年 6 月 10 日 |
#464 in 文件系统
282 每月下载量
115KB
2K SLoC
Docufort
一个崩溃一致只写文件工具箱
概述
这是编写文件恢复例程可能的最薄封装。即使您存储的是文本,所有内容都视为二进制。这不是一个“包含电池”的库。
错误纠正码
系统需要错误纠正码才能运行。它设置为 Reed-Solomon,其中每个块的“校正”编码连接到“消息”,并在(预或)附加到“消息”。这允许直接读取数据,并将校正处理作为可选项。该“系统”使用 ECC 作为系统消息的校验和和完整性保险。写入文件的“内容”可以可选地进行 ECC。
有一个 crate 功能 parallel
,将并行计算和应用于存储的内容的 ECC 例程(不影响 docufort 标头 ECC 计算,因为那总是单个数据块)。
压缩和哈希
如果您想使用此系统,您需要为您选择的哈希函数和压缩算法实现 BlockInputs
特性。此库为您做其他事情。
版本 2 目标
- 从 Reed-Solomon ECC 切换到 BCH,因为我们真正需要位旋转保护(随机而不是突发错误)。
- 目前没有在 Rust 中看到 BCH 库。这里有一个 链接,但它进行的错误纠正比我们可能需要的位旋转要多。
- 编写哈希恢复例程。目前,如果块末尾的哈希字节损坏超出了 ECC 校正能力,而其余的块完好无损,则最终会显示该块已损坏。这种情况非常不可能,因此我没有在 V1 上浪费时间。
警告
这不仅仅是一个库,而是一个工具箱。您可以使用这些原语构建一个无法正常工作的系统。我尽量注释和记录得足够多,以便您了解它可能的工作方式。
待办事项:更正式地编写规范。目前,它生活在写入模块文档中,可能已过时。代码和测试目前是“规范”。
依赖关系
~51–315KB