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

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

如何将文件分片file文件,因此可以使用任何恢复n他们当中?

看起来像纠删码,最好是“最佳擦除码”。 (另一个应用程序和建议的编程库的示例:“您需要擦除代码”https://stackoverflow.com/a/28932095)。就像是里德-所罗门纠错(比更灵活的东西RAID6)冗余的风格。

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

6 中 3 级冗余的示例:

split_with_redundancy -n 3 -m 6 input.dat

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

recover_using_redundancy intput.dat.{0,2,4}

我不关心给定文件中的错误,即我不需要前向纠错。我假设我可以依赖 m 中的 n 个冗余部分完全正确。

答案1

你想看看

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

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

zfec -k3 -m6 input.dat

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

答案2

您可以使用 gfshare 来实现此目的:http://manpages.ubuntu.com/manpages/bionic/man7/gfshare.7.html

apt-get install libgfshare-bin

例如,7 中的 2。

gfsplit -n 2 -m 7 myfile.txt

只能使用两个共享来重建文件:

gfcombine myfile.txt.1 myfile.txt.7 

相关内容