parchiwalny

parchiwalny
Rozszerzenie nazwy pliku
.par, .par2, .p??, (.par3 w przyszłości)
Typ formatu Usuń kod , plik archiwum

Parchive ( portmanteau archiwum parzystości i formalnie znany jako specyfikacja parzystości zestawu woluminów ) to system kodu wymazywania , który tworzy pliki par do weryfikacji sumy kontrolnej integralności danych , z możliwością wykonywania operacji odzyskiwania danych , które mogą naprawić lub zregenerować uszkodzone lub brakujące dane.

Parchive został pierwotnie napisany w celu rozwiązania problemu niezawodnego udostępniania plików w sieci Usenet , ale może być używany do ochrony wszelkiego rodzaju danych przed uszkodzeniem danych , gniciem dysku , gniciem bitów oraz przypadkowym lub złośliwym uszkodzeniem. Pomimo nazwy Parchive wykorzystuje bardziej zaawansowane techniki (w szczególności kody korekcji błędów ) niż uproszczone metody parzystości wykrywania błędów .

Od 2014 roku PAR1 jest przestarzały, PAR2 jest dojrzały do ​​​​powszechnego użytku, a PAR3 jest wycofaną wersją eksperymentalną opracowaną przez autora MultiPar, Yutakę Sawadę. Oryginalny projekt SourceForge Parchive był nieaktywny od 30 kwietnia 2015 r. Nad nową specyfikacją PAR3 pracował od 28 kwietnia 2019 r. Autor specyfikacji PAR2, Michael Nahas. Wersja alfa specyfikacji PAR3 została opublikowana 29 stycznia 2022 roku, podczas gdy sam program jest w fazie rozwoju.

Historia

Parchive miał na celu zwiększenie niezawodności przesyłania plików za pośrednictwem grup dyskusyjnych Usenet . Usenet został pierwotnie zaprojektowany do nieformalnych rozmów, a leżący u jego podstaw protokół, NNTP , nie został zaprojektowany do przesyłania dowolnych danych binarnych. Innym ograniczeniem, które było dopuszczalne w przypadku konwersacji, ale nie w przypadku plików, było to, że wiadomości były zwykle dość krótkie i ograniczone do 7-bitowego tekstu ASCII .

Opracowano różne techniki wysyłania plików przez Usenet, takie jak uuencoding i Base64 . Późniejsze oprogramowanie Usenetu zezwalało na 8-bitowe rozszerzone ASCII , co pozwalało na nowe techniki, takie jak yEnc . Duże pliki zostały podzielone, aby zmniejszyć efekt uszkodzonego pobierania, ale zawodny charakter Usenetu pozostał.

Wraz z wprowadzeniem Parchive można było tworzyć pliki parzystości, które były następnie przesyłane wraz z oryginalnymi plikami danych. Jeśli którykolwiek z plików danych został uszkodzony lub utracony podczas propagacji między serwerami Usenetu, użytkownicy mogli pobrać pliki parzystości i użyć ich do odtworzenia uszkodzonych lub brakujących plików. Parchive zawierał konstrukcję małych plików indeksowych (*.par w wersji 1 i *.par2 w wersji 2), które nie zawierają żadnych danych naprawczych. Te indeksy zawierają skróty plików , które można wykorzystać do szybkiej identyfikacji plików docelowych i zweryfikowania ich integralności.

Ponieważ pliki indeksu były tak małe, zminimalizowały ilość dodatkowych danych, które trzeba było pobrać z Usenetu, aby sprawdzić, czy wszystkie pliki danych są obecne i nieuszkodzone, lub określić, ile woluminów z parzystością jest wymaganych do naprawy uszkodzeń lub zrekonstruowania brakujących plików. Były najbardziej przydatne w wersji 1, w której woluminy z parzystością były znacznie większe niż krótkie pliki indeksowe. Te większe woluminy z parzystością zawierają rzeczywiste dane odzyskiwania wraz z duplikatami informacji w plikach indeksowych (co pozwala na ich samodzielne użycie do weryfikacji integralności plików danych, jeśli nie ma dostępnego małego pliku indeksowego).

W lipcu 2001 r. Tobias Rieper i Stefan Wehlus zaproponowali specyfikację Parity Volume Set, a przy pomocy innych członków projektu w październiku 2001 r. Opublikowano wersję 1.0 specyfikacji. Par1 wykorzystał korekcję błędów Reeda-Solomona do utworzenia nowych plików odzyskiwania . Każdy z plików odzyskiwania może zostać użyty do odbudowania brakującego pliku z niekompletnego pobrania .

Wersja 1 stała się powszechnie używana w sieci Usenet, ale miała pewne ograniczenia:

  • Ograniczono go do obsługi maksymalnie 255 plików.
  • Pliki odzyskiwania musiały mieć rozmiar największego pliku wejściowego, więc nie działało dobrze, gdy pliki wejściowe miały różne rozmiary. (Ogranicza to jego użyteczność, gdy nie jest sparowane z zastrzeżonym narzędziem do kompresji RAR).
  • Algorytm odzyskiwania miał błąd z powodu błędu w artykule akademickim, na którym został oparty.
  • Był silnie powiązany z Usenetem i uznano, że bardziej ogólne narzędzie może mieć szerszą publiczność.

W styczniu 2002 roku Howard Fukada zaproponował opracowanie nowej specyfikacji Par2 ze znaczącymi zmianami polegającymi na tym, że weryfikacja i naprawa danych powinna działać na blokach danych, a nie na całych plikach, oraz że algorytm powinien przełączyć się na używanie liczb 16-bitowych zamiast 8-bitowych liczb używanych przez PAR1. Michael Nahas i Peter Clements podjęli te pomysły w lipcu 2002 r., przy dodatkowym udziale Paula Nettle'a i Ryana Gallaghera (obaj pisali klientów Par1). Wersja 2.0 specyfikacji Parchive została opublikowana przez Michaela Nahasa we wrześniu 2002 roku.

Następnie Peter Clements napisał dwie pierwsze implementacje Par2, QuickPar i par2cmdline. Opuszczony od 2004 roku, Paul Houle stworzył phpar2, aby zastąpić par2cmdline. Yutaka Sawada stworzył MultiPar, aby zastąpić QuickPar. MultiPar wykorzystuje par2j.exe (który jest częściowo oparty na technikach optymalizacyjnych par2cmdline) jako silnik zaplecza MultiPar.

Wersje

Wersje 1 i 2 formatu pliku są niezgodne. (Jednak wielu klientów obsługuje oba).

Par1

Dla Par1, plików f1 , f2 , ..., fn , Parchive składa się z pliku indeksu ( f.par ), który jest plikiem typu CRC bez bloków odzyskiwania oraz pewnej liczby „woluminów parzystości” ( f.p01 , f.p02 itd.). Biorąc pod uwagę wszystkie oryginalne pliki z wyjątkiem jednego (na przykład f2 ), możliwe jest utworzenie brakującego f2, biorąc pod uwagę wszystkie inne oryginalne pliki i dowolny z woluminów parzystości. Alternatywnie możliwe jest odtworzenie dwóch brakujących plików z dowolnych dwóch woluminów parzystości i tak dalej.

Par1 obsługuje łącznie do 256 plików źródłowych i plików odzyskiwania.

Par2

Pliki Par2 zazwyczaj używają tego systemu nazewnictwa/rozszerzeń: nazwa_pliku.vol000+01.PAR2 , nazwa_pliku.vol001+02.PAR2 , nazwa_pliku.vol003+04.PAR2 , nazwa_pliku.vol007+06.PAR2 , itd. Liczba po znaku „+” w nazwie pliku wskazuje, ile zawiera bloków, a liczba po „vol” oznacza numer pierwszego bloku odzyskiwania w pliku PAR2. Jeśli plik indeksu pobranego pliku stwierdza, że ​​brakuje 4 bloków, najłatwiejszym sposobem naprawy plików byłoby pobranie nazwy pliku.vol003+04.PAR2 . Jednakże, ze względu na nadmiarowość, dopuszczalna jest również nazwa pliku.vol007+06.PAR2 . Istnieje również plik indeksu nazwa_pliku.PAR2 , który jest identyczny pod względem funkcji z małym plikiem indeksu używanym w PAR1.

Specyfikacja Par2 obsługuje do 32 768 bloków źródłowych i do 65 535 bloków odzyskiwania. Pliki wejściowe są dzielone na wiele równych bloków, dzięki czemu pliki odzyskiwania nie muszą mieć rozmiaru największego pliku wejściowego.

Chociaż Unicode jest wymieniony w specyfikacji PAR2 jako opcja, większość implementacji PAR2 nie obsługuje Unicode.

Obsługa katalogów jest zawarta w specyfikacji PAR2, ale większość lub wszystkie implementacje jej nie obsługują.

Par3

Pierwotnie planowano opublikowanie specyfikacji Par3 jako ulepszenia specyfikacji Par2. Jednak do tej pory [ kiedy? ] pozostaje zamkniętym źródłem przez właściciela specyfikacji, Yutakę Sawadę.

Dyskusja na temat nowego formatu rozpoczęła się w sekcji problemów GitHub utrzymywanego rozwidlenia par2cmdline 29 stycznia 2019 r. Dyskusja doprowadziła do powstania nowego formatu, który również nosi nazwę Par3. Specyfikacja nowego formatu Par3 została opublikowana na GitHub , ale od 28 stycznia 2022 r. pozostaje wersją roboczą alfa. Specyfikację napisał Michael Nahas, autor specyfikacji Par2, z pomocą Yutaki Sawady, animetosho i malaire.

Nowy format twierdzi, że ma wiele zalet w porównaniu z formatem Par2, w tym:

  • Obsługuje więcej niż 2 16 plików i więcej niż 2 16 bloków.
  • Obsługuje pakowanie małych plików w jeden blok, a także deduplikację, gdy blok pojawia się w wielu plikach.
  • Obsługuje nazwy plików UTF-8 , uprawnienia do plików, łącza twarde i łącza miękkie.
  • Obsługuje osadzanie danych PAR w innych formatach, takich jak archiwa ZIP lub obrazy dysków ISO.
  • Obsługuje „przyrostowe kopie zapasowe”, w których użytkownik tworzy pliki odzyskiwania dla niektórych plików lub folderów, zmienia niektóre dane i tworzy nowe pliki odzyskiwania, ponownie wykorzystując niektóre starsze pliki.
  • Obsługuje więcej algorytmów kodu korekcji błędów (takich jak LDPC i rzadka macierz losowa).
  • Zamieniono funkcję skrótu MD5 w Par2 na BLAKE3 .
  • Obsługuje puste katalogi.
  • Obsługuje uprawnienia do plików.
  • Obsługuje dowiązania twarde i dowiązania symboliczne.

Oprogramowanie

Wieloplatformowy

Okna

  • MultiPar (darmowy) — Opiera się na funkcjach i GUI QuickPar oraz używa par2j.exe Yutaki Sawady jako zaplecza PAR2. MultiPar obsługuje wiele języków przez Unicode. Nazwa MultiPar pochodzi od „wielojęzycznego klienta PAR”. MultiPar został również zweryfikowany pod kątem współpracy z Wine pod TrueOS i Ubuntu i może działać również z innymi systemami operacyjnymi. Chociaż komponenty Par2 są (lub będą) open source, GUI MultiPar na nich nie jest obecnie open source.
  • QuickPar (darmowy) - nieobsługiwany od 2004 roku, zastąpiony przez MultiPar.
  • phpar2 — zaawansowany par2cmdline z wielowątkowością i wysoce zoptymalizowanym kodem asemblera (około 66% szybszy niż QuickPar 0.9.1)
  • Mirror — pierwsza implementacja PAR, nieobsługiwana od 2001 roku.

Mac OS X

POSIX

Oprogramowanie dla systemów operacyjnych zgodnych z POSIX :

Zobacz też

Linki zewnętrzne