是否可以在单个文件中添加纠错码(BCH,RS等)?


12

据我所知,WinRAR归档文件可能包含ECC(纠错码),因此,如果归档文件受到轻微损坏,则可以自己对其进行修复。

例如,我可以先编码archives.tararchives.tar.ecc,然后将其上传到我的服务器。如果文件在客户端下载后受到了轻微损坏,则可以自动修复该文件,而无需通过解码再次下载文件archives.tar.ecc。我认为如果网络连接不稳定,将是一个好主意。

我想知道在Linux上是否有可以满足我需求的(开源)软件。

有什么建议么?


在某种程度上,这已经发生了-每个文件的标头chksum字段是该标头的组成字节的总和-包括size字段。许多tar进一步处理-GNU tar在标头元数据中编码稀疏文件漏洞,并且在由任何POSIX pax兼容存档器提取后,会生成包含重建文件所需信息的文件,或者由GNU还原tar为原始稀疏文件。它使用主要编码的头变量,如POSIX为pax实用程序 w /所定义-o
mikeserv

Answers:


6

我遇到了同样的问题,发现另一个答案中提供的解决方案是不可接受的,因为par2程序/标准涉及创建单独的文件来进行恢复和验证。我就像我认为的原始提问者一样,想要一个带有纠错代码的文件。

我找到了以前在包管理器中的rsbep程序,然后在这里找到了必要的代码:https ://www.thanassis.space/rsbep.html

这样一来,便可以使用Reed-Solomon错误纠正代码创建文件,然后从可能已损坏的ECC版本中检索原始文件。


rsbep很棒!但这有点不同:它是一个完整的冻结OS,因此您可以在其中添加文件,但不能修改其中的内容,而且移动起来也比较麻烦。但这是使用FUSE和开源的一种非常有趣的方法。
华丽的

1
@gaborous,那不是事实。有一个rsbep透明使用的FUSE fs实现,但这只是基于逐个文件运行的脚本之上。
纽约州

6

您对PAR2感兴趣,它使用Reed-Solomon错误校正。parchive是ECC文件格式规范,对于Linux,您将需要PyParpar2tbb;在Windows上,您将使用一个称为QuickPar的GUI 。


1
PyPar和par2tbb的链接对我来说看起来很糟。我在这里
Drist

2
我认为PyPar与纠错完全无关。
mbarkhau

2

如果要将ecc文件与归档文件分开,则可以使用pyFileFixity,这是一个开放源代码Python项目,旨在提供下一代类似PAR的保护系统,以防止比特损坏。

如果您希望将ecc保护直接包含在档案中,则可以使用开源DAR(一种下一代TAR),它可以生成非实体(即,允许部分提取损坏的档案)和ecc(使用PAR2)和目录隔离(即,保存目录树和文件系统元数据的备份)直接在.dar归档文件中。


0

另一个类似的2018年项目是Redupe,它似乎在两个单独的工具中提供了独立和嵌入式文件错误纠正:

第一个工具redupe是仿照gzip或bzip2之类的压缩工具建模的,但是增加了冗余而不是消除了冗余。

网页中的示例(为简洁起见,与您的用例类似):

$ redupe home-backup.tar.gz
$ ls -l
-rw------- 1 rescrv 5625162218 home-backup.tar.gz
-rw-r--r-- 1 rescrv 6433996800 home-backup.tar.gz.rd

reundupe 然后可用于还原文件并可能纠正一些小错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.