如何将文件分片成 n-out-of-m 冗余(擦除代码,例如一种芦苇所罗门)?

Grz*_*cki 5 backup redundancy

如何将文件分片filem 个文件,以便可以用其中任意n 个文件恢复?

它看起来像Erasure Code,最好是“最佳擦除代码”。(另一个应用程序和建议的编程库示例:“您需要擦除代码” /sf/answers/2025246681/)。这就像Reed-Solomon 纠错(比RAID6更灵活)风格的冗余。

早期发现:rsbep到目前为止,我已经发现了一些修改,但它们似乎是针对不同的用例设计的。我还发现从 Linux 内核移植到用户空间的 reed-solomon 在这里,但它不是我所描述的目的的工具。

3-out-of-6 冗余级别示例:

split_with_redundancy -n 3 -m 6 input.dat
Run Code Online (Sandbox Code Playgroud)

生成input.dat.0..5,因此这些文件的任何树都足以恢复:

recover_using_redundancy intput.dat.{0,2,4}
Run Code Online (Sandbox Code Playgroud)

我不关心给定文件中的错误,即我不需要Forward Error Correction。我假设我可以依靠让 n-out-of-m 冗余部分完全正确。

小智 4

你想看看

https://pypi.org/project/zfec/

这正是您正在寻找的。例如

zfec -k3 -m6 input.dat
Run Code Online (Sandbox Code Playgroud)

创建 6 个文件,其中 3 个是重建原始文件所必需的。