Czy można dodać kody korekcji błędów (BCH, RS itp.) Do jednego pliku?


12

O ile mi wiadomo, archiwa WinRAR mogą zawierać ECC (kody korekcji błędów), więc jeśli archiwum jest nieco uszkodzone, wówczas można je naprawić samodzielnie.

Na przykład, może najpierw zakodować archives.tardo archives.tar.ecc, a następnie przesłać go do mojego serwera. Jeśli plik zostanie nieznacznie uszkodzony po pobraniu przez klienta, można go naprawić automatycznie bez ponownego pobierania pliku przez dekodowanie archives.tar.ecc. Myślę, że to świetny pomysł, jeśli połączenie sieciowe jest niestabilne.

Zastanawiam się, czy w systemie Linux działa jakieś oprogramowanie typu open source.

Jakieś sugestie?


do pewnego stopnia tak się już dzieje - pole chksum nagłówka każdego pliku jest sumą bajtów składowych tego nagłówka - w celu uwzględnienia pola rozmiaru. Wiele tarsięga dalej - GNU tarkoduje rzadkie dziury w metadanych nagłówka, a po wyodrębnieniu przez dowolny paxarchiwizator zgodny z POSIX generuje pliki zawierające informacje potrzebne do odbudowania pliku lub przez GNU tardo oryginalnego rzadkiego pliku. Wykorzystuje głównie zakodowane zmienne nagłówkowe, które można zdefiniować zgodnie z POSIX dla paxnarzędzia w / -o.
mikeserv

Odpowiedzi:


6

Miałem ten sam problem i stwierdziłem, że rozwiązania podane w drugiej odpowiedzi były nie do zaakceptowania, ponieważ program / standard par2 obejmuje tworzenie osobnych plików do odzyskiwania i weryfikacji. Myślę, że podobnie jak oryginalny pytający chcę jednego pliku z kodami korekcji błędów.

Znalazłem program rsbep, który kiedyś znajdował się w menedżerze pakietów, a następnie znalazłem potrzebny kod tutaj: https://www.thanassis.space/rsbep.html

Umożliwia to utworzenie pliku z kodami korekcji błędów Reeda-Solomona, a następnie odzyskanie oryginalnego pliku z prawdopodobnie uszkodzonej wersji ECC.


rsbep jest świetny! Ale jest trochę inaczej: jest to cały zamrożony system operacyjny, więc możesz dodawać pliki do środka, ale nie możesz modyfikować tego, co jest w środku, a poruszanie się jest nieco trudniejsze. Ale to naprawdę ciekawe podejście, używając FUSE i opensource.
gaboryczny

1
@ gaborous, to nieprawda. Istnieje implementacja FUSE fs korzystająca z rsbepprzezroczystości, ale to tylko na skryptach, które działają na zasadzie plik po pliku.
nyov

6

Interesuje Cię PAR2, który wykorzystuje korekcję błędów Reeda-Solomona. parchive to specyfikacja formatu pliku ECC, w Linuksie będziesz chciał PyPar lub par2tbb , a w systemie Windows używasz GUI o nazwie QuickPar .


1
Linki do PyPar i par2tbb wyglądają na uszkodzone. Znalazłem tutaj
Drist

2
Myślę, że PyPar jest całkowicie niezwiązany z korekcją błędów.
mbarkhau,

2

Jeśli chcesz, aby plik ecc był oddzielny od archiwum, możesz użyć pyFileFixity, projektu Python typu open source, którego celem jest zapewnienie systemu ochrony PAR typu nowej generacji przed uszkodzeniem bitów.

Jeśli chcesz, aby ochrona ECC była uwzględniona bezpośrednio w archiwum, możesz użyć DAR opensource , rodzaj TAR nowej generacji, który pozwala wygenerować zarówno niestałe (tj. Umożliwia częściowe wyodrębnienie uszkodzonych archiwów), jak i ecc ( przy użyciu PAR2) i izolacji katalogu (tj. zapisz kopię zapasową drzewa katalogów i metadanych systemu plików) bezpośrednio w archiwach .dar.


0

Innym podobnym projektem z 2018 roku jest Redupe, który wydaje się zapewniać zarówno oddzielną, jak i osadzoną korekcję błędów pliku w dwóch osobnych narzędziach:

Pierwsze narzędzie, redupe, jest modelowane na podstawie narzędzi do kompresji, takich jak gzip lub bzip2, ale dodaje nadmiarowość zamiast go eliminować.

Przykład na stronie (zmieniony dla zwięzłości) wygląda podobnie do twojego przypadku użycia:

$ 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 może być następnie użyty do przywrócenia pliku i ewentualnej naprawy drobnych błędów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.