Чи додає gzip цілісність / crc чек до .tar?


12

Я запускаю команди:

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

потім я копіюю файл на безліч ненадійних носіїв інформації, а пізніше розпаковую його за допомогою:

tar -xzf myArchive.tar.gz

Те, що я стиснув кульку з дьогтем, чи будь-яким чином гарантуватиме цілісність чи, принаймні, CRC розпакованого вмісту?

Відповіді:


15

tarсама не записує контрольну суму для подальшого співставлення. Якщо ви архів ви можете мати цю функціональність.gziptar

tarвикористовує compress. Якщо ви використовуєте -Zпрапор під час створення архіву tar, compressпрограма буде використовувати програму під час читання або запису архіву. На сторінці сторінки gzip:

Стандартний формат стиснення не був розроблений таким чином, щоб допускати перевірку узгодженості.

Але, ви можете використовувати -zпараметр. Потім tarчитає і записує архів наскрізь gzip. І gzipпише контрольну суму crc. Щоб відобразити цю контрольну суму, використовуйте цю команду:

$ 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

На сторінці сторінки gzip:

Використовуючи перші два формати ( мається на увазі gzip або zip ), gunzip перевіряє 32-бітний CRC.


5

Так, формат файлу gzip містить контрольну суму CRC-32, яку можна використовувати для виявлення пошкодження архіву.

Звичайно, хоча контрольна сума дозволяє gzip повідомити , що архів пошкоджений, він насправді нічого не допомагає відновити дані всередині архіву. Таким чином, це в основному корисно для таких речей, як перевірка того, що архів, який ви тільки що завантажили з Інтернету, дійсно був завантажений правильно.

Якщо ви насправді переживаєте за збереження або передачу ваших архівів через ненадійний носій інформації, ви можете розглянути можливість використання формату архіву на зразок par, який фактично забезпечує виправлення помилок, а також виявлення помилок. Звичайно, нижня сторона таких форматів полягає в тому, що надмірність, необхідна для виправлення помилок, обов'язково дещо збільшує розмір файлу.


4

tarне має перевірки цілісності. Приклад:

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

tttttttttttttttttt

Дивіться, зміст a.tarархіву змінився, тому файл bмає зовсім інший вміст, але tar не помітив цього. Це справедливо для будь-якого дьогтю, включаючи смола-1,28 (остання) з обома форматами дьогтю --format=gnu --format=posix. paxКоманда (альтернативний читач дьоготь) pax -r < a.tarтакож не помічає архів змін.


2
OP здається , щоб бути в курсі (або , по крайней мере , підозрюваним) , що tar(принаймні , НЕ в -zопції) не виконує перевірку цілісності. Також прийнята відповідь зазначає це. Питання в тому, gzipчи додає (чи використання -zопції) перевірку цілісності?
G-Man каже: "Відновіть Моніку"

правильний G-Man, це може бути гарною відповіддю, якщо вона також міститиме частину gzip і демонструє, що gzip виявляє, що вміст змінився.
Аксель Вілгерт

2

Якщо tar розпізнає помилки під час розпакування, він надрукує повідомлення та вийде із ненульовим значенням виходу. Така поведінка не залежить від алгоритму стиснення, який використовується після створення файлу tar.

Якщо ви хочете переконатися, що файл був успішно надісланий до пункту призначення через ненадійне посилання, то створіть суму md5 файлу перед відправкою та підтвердіть суму md5 після отримання.


якщо мене цікавить лише цілісність розпакованого вмісту. md5 на дьогті не додає нічого зайвого порівняно з контрольним дьогтем під час розпакування?
Аксель Вілгерт

Цілісність вмісту всередині архіву дьогтю подбає tarсама. Ви можете додати додатковий шар, якщо це потрібно: Якщо цілісність файлу смоли перевірена, то вміст всередині архіву смоли також добре. Але все, про що слід подбати за протоколом, який використовується для передачі даних в першу чергу.
січня

-1

Пакет PKZip (win / dos) постачається з програмою під назвою PKZipFix, яка може відновити файли з пошкоджених архівів. Я раніше використовував цю утиліту, вона може відновлювати файли з помірно пошкоджених архівів, які не розпакуються.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.