Ist es möglich, einer einzelnen Datei Fehlerkorrekturcodes (BCH, RS usw.) hinzuzufügen?

12

Soweit mir bekannt ist, können WinRAR-Archive ECC-Codes (Error Correction Codes) enthalten. Wenn das Archiv also leicht beschädigt ist, kann es von selbst behoben werden.

Zum Beispiel kann ich zum ersten Mal kodieren archives.tarzu archives.tar.ecc, und es dann auf meinen Server hochgeladen werden . Wenn die Datei nach dem Herunterladen durch den Client leicht beschädigt ist, kann sie automatisch repariert werden, ohne dass die Datei durch Dekodierung erneut heruntergeladen werden muss archives.tar.ecc. Ich denke, es ist eine großartige Idee, wenn die Netzwerkverbindung instabil ist.

Ich frage mich, ob es eine (Open-Source-) Software gibt, die unter Linux ausgeführt wird und meine Anforderungen erfüllt.

Irgendwelche Vorschläge?

Kevin Dong
quelle
Bis zu einem gewissen Grad geschieht dies bereits - das chksum-Feld jeder Datei ist die Summe der Teilbytes dieses Headers -, um das size-Feld einzuschließen. Viele targehen noch weiter - GNU tarcodiert spärliche Dateilöcher in Header-Metadaten und paxgeneriert nach dem Extrahieren mit einem POSIX- kompatiblen Archivierer Dateien, die Informationen enthalten, die zum Neuerstellen der Datei oder von GNU tarzur ursprünglichen spärlichen Datei erforderlich sind . Es werden primär codierte Header-Variablen verwendet, die gemäß POSIX für das paxDienstprogramm w / definiert werden können -o.
mikeserv

Antworten:

6

Ich hatte das gleiche Problem und stellte fest, dass die in der anderen Antwort angegebenen Lösungen nicht akzeptabel waren, da das par2-Programm / der par2-Standard das Erstellen separater Dateien für die Wiederherstellung und Überprüfung umfasst. Ich möchte, wie der ursprüngliche Fragesteller, eine einzige Datei mit Fehlerkorrekturcodes.

Ich fand das Programm rsbep, das sich früher im Paketmanager befand, und fand dann den erforderlichen Code hier: https://www.thanassis.space/rsbep.html

Auf diese Weise kann eine Datei mit Reed-Solomon-Fehlerkorrekturcodes erstellt und anschließend die Originaldatei aus der möglicherweise beschädigten ECC-Version abgerufen werden.

Ethan
quelle
rsbep ist großartig! Aber es ist ein bisschen anders: Es ist ein vollständig eingefrorenes Betriebssystem, sodass Sie Dateien hinzufügen können, aber nicht ändern können, was sich darin befindet, und es ist etwas umständlicher, sich darin zu bewegen. Aber es ist ein wirklich interessanter Ansatz, FUSE und Open Source zu verwenden.
Gaborous
1
@gaborous, das stimmt nicht. Es gibt eine FUSE-fs-Implementierung, die rsbeptransparent verwendet, aber nur die Skripte, die Datei für Datei arbeiten.
Nyov
6

Sie interessieren sich für PAR2, das die Reed-Solomon-Fehlerkorrektur verwendet. parchive ist die ECC-Dateiformatspezifikation. Für Linux benötigen Sie PyPar oder par2tbb , und unter Windows verwenden Sie eine GUI namens QuickPar .

RAKK
quelle
1
Die Links für PyPar und par2tbb sehen für mich kaputt aus. Ich fand par2tbb hier
Drist
2
Ich denke, PyPar hat nichts mit Fehlerkorrektur zu tun.
mbarkhau
2

Wenn Sie möchten, dass die ecc-Datei vom Archiv getrennt wird, können Sie pyFileFixity verwenden, ein OpenSource-Python-Projekt , das ein PAR-ähnliches Schutzsystem der nächsten Generation gegen Bitkorruption bereitstellen soll.

Wenn Sie möchten, dass der ecc-Schutz direkt in das Archiv aufgenommen wird, können Sie das OpenSource- DAR verwenden , eine Art Next-Gen-TAR, mit dem sowohl nicht-solid (dh das teilweise Extrahieren beschädigter Archive) als auch ecc ( unter Verwendung von PAR2) und Katalogisolation (dh Speichern einer Sicherung des Verzeichnisbaums und der Metadaten des Dateisystems) direkt in den .dar-Archiven.

mühsam
quelle
0

Ein weiteres ähnliches 2018-Projekt ist Redupe , das sowohl separate als auch eingebettete Dateifehlerkorrekturen in zwei separaten Tools bietet:

Das erste Tool, Redupe, ist Komprimierungswerkzeugen wie gzip oder bzip2 nachempfunden, fügt jedoch Redundanz hinzu, anstatt sie zu beseitigen.

Das Beispiel auf der Webseite (der Kürze halber geändert) ähnelt Ihrem Anwendungsfall:

$ 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 kann dann verwendet werden, um die Datei wiederherzustellen und möglicherweise kleine Fehler zu korrigieren.

Yuri
quelle