Czy gzip dodaje sprawdzanie integralności / crc do pliku .tar?

12

Uruchamiam polecenia:

tar -cf myArchive.tar myDirectory/
gzip myArchive.tar

następnie kopiuję plik na wiele niewiarygodnych nośników, a następnie rozpakowuję go, używając:

tar -xzf myArchive.tar.gz

Fakt, że skompresowałem tar-ball, czy w jakikolwiek sposób zagwarantuje to integralność, a przynajmniej CRC rozpakowanej zawartości?

Aksel Willgert
źródło

Odpowiedzi:

15

tarsam nie zapisuje sumy kontrolnej do późniejszego porównania. Jeśli archiwizacji można mieć tę funkcjonalność.gziptar

tarwykorzystuje compress. Jeśli użyjesz -Zflagi podczas tworzenia archiwum tar, użyje compressprogramu podczas odczytu lub zapisu archiwum. Z strony gzippodręcznika:

Standardowy format kompresji nie został zaprojektowany w celu umożliwienia sprawdzania spójności.

Możesz jednak użyć -zparametru. Następnie tarczyta i zapisuje archiwum gzip. I gzipzapisuje sumę kontrolną CRC. Aby wyświetlić tę sumę kontrolną, użyj tego polecenia:

$ gzip -lv archive.tar.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 3f641c33 Sep 25 14:01               24270              122880  80.3% archive.tar

Z strony gzippodręcznika:

Podczas używania dwóch pierwszych formatów (chodzi o gzip lub zip ), gunzip sprawdza 32-bitowy CRC.

chaos
źródło
5

Tak, format pliku gzip zawiera sumę kontrolną CRC-32, której można użyć do wykrycia uszkodzenia archiwum.

Oczywiście, chociaż suma kontrolna pozwala gzipowi powiedzieć , że archiwum jest uszkodzone, w rzeczywistości nie robi nic, aby pomóc Ci odzyskać dane w archiwum. Dlatego przydaje się przede wszystkim do sprawdzania, czy archiwum, które właśnie pobrałeś z sieci, naprawdę zostało poprawnie pobrane.

Jeśli faktycznie martwisz się przechowywaniem lub przesyłaniem swoich archiwów przez niewiarygodne media, możesz rozważyć użycie formatu archiwum takiego jak par, który oprócz wykrywania błędów zapewnia także korekcję błędów. Oczywiście wadą takich formatów jest to, że nadmiarowość wymagana do korekcji błędów niekoniecznie zwiększa rozmiar pliku.

Ilmari Karonen
źródło
4

tarnie ma kontroli integralności. Przykład:

$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b

tttttttttttttttttt

Zobacz, zawartość a.tararchiwum uległa zmianie, więc plik bma zupełnie inną zawartość, ale tar tego nie zauważył. Dotyczy to każdej tar, w tym tar-1.28 (najnowszej) z obydwoma formatami tar --format=gnu --format=posix. paxKomenda (alternatywny czytnik tar) pax -r < a.tarrównież nie zauważyć zmiany archiwum.

użytkownik115641
źródło
2
PO wydaje się być świadome (lub co najmniej podejrzany), który tar(przynajmniej bez tej -zopcji) nie zrobić sprawdzanie integralności. Również przyjęta odpowiedź stanowi to. Pytanie brzmi: czy gzip(lub użycie -zopcji) dodaje sprawdzanie integralności?
G-Man mówi „Przywróć Monikę”
poprawny G-Man, To może być dobra odpowiedź, jeśli zawiera również część gzip i pokazuje, że gzip wykrywa, że ​​zawartość się zmieniła.
Aksel Willgert
2

Jeśli tar wykryje błędy podczas rozpakowywania, wydrukuje komunikat i zakończy działanie z niezerową wartością wyjścia. To zachowanie jest niezależne od algorytmu kompresji używanego po utworzeniu pliku tar.

Jeśli chcesz sprawdzić, czy plik został pomyślnie wysłany do miejsca docelowego za pomocą niewiarygodnego łącza, utwórz sumę md5 pliku przed wysłaniem i zweryfikuj sumę md5 po odbiorze.

Jan
źródło
jeśli jestem zainteresowany tylko integralnością rozpakowanej zawartości. md5 na tar nie dodaje nic więcej w porównaniu do tar, który robi tar podczas rozpakowywania?
Aksel Willgert
Dbałość o integralność treści w archiwum tar jest załatwiona tarsama. W razie potrzeby możesz dodać dodatkową warstwę: jeśli integralność pliku tar zostanie zweryfikowana, zawartość wewnątrz archiwum tar również będzie w porządku. Ale wszystko to powinno być załatwione przede wszystkim przez protokół używany do przesyłania danych.
stycznia
-1

Pakiet PKZip (win / dos) zawiera program o nazwie PKZipFix, który może odzyskiwać pliki z uszkodzonych archiwów. Korzystałem z tego narzędzia w przeszłości, może ono odzyskiwać pliki z umiarkowanie uszkodzonych archiwów, które nie uległyby dekompresji.

użytkownik87282
źródło