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 文件系统

Download history 284/week @ 2024-06-06 45/week @ 2024-06-13 150/week @ 2024-06-27 23/week @ 2024-07-04 122/week @ 2024-07-18 39/week @ 2024-07-25 120/week @ 2024-08-01 1/week @ 2024-08-08

282 每月下载量

MIT 许可证

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