Добавляет ли gzip проверку целостности / crc в .tar?

12

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

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

затем я копирую файл на множество ненадежных носителей, а затем распаковываю его, используя:

tar -xzf myArchive.tar.gz

Тот факт, что я сжал tar-ball, будет ли это каким-либо образом гарантировать целостность или, по крайней мере, 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 этого не заметил. Это верно для любого tar, включая tar-1.28 (последний) с обоими форматами tar --format=gnu --format=posix. Команда pax(альтернативный читатель tar) pax -r < a.tarтакже не замечает изменений в архиве.

user115641
источник
2
OP кажется , чтобы быть в курсе (или , по крайней мере , подозреваемым) , что tar(по крайней мере , не в -zопции) не выполняет проверку целостности. Также принятый ответ заявляет это. Вопрос: добавляет ли gzip(или использование -zопции) проверку целостности?
G-Man говорит: «Восстановите Монику»
правильный G-Man, Это может быть правильным ответом, если он также включает в себя часть gzip и демонстрирует, что gzip обнаруживает, что содержимое изменилось.
Аксель Виллгерт
2

Если tar обнаружит ошибки при распаковке, он напечатает сообщение и завершит работу с ненулевым значением выхода. Это поведение не зависит от алгоритма сжатия, используемого после создания файла tar.

Если вы хотите убедиться, что файл был успешно отправлен в пункт назначения по ненадежной ссылке, то создайте сумму md5 файла перед отправкой и проверьте сумму md5 после приема.

январь
источник
если меня интересует только целостность распакованного контента. md5 на tar не добавляет ничего лишнего по сравнению с проверкой, выполняемой tar при распаковке?
Аксель Виллгерт
Целостность содержимого внутри архива tar решается tarсама собой. При необходимости вы можете добавить дополнительный слой: если целостность файла tar проверена, то содержимое внутри архива tar тоже в порядке. Но обо всем этом должен заботиться протокол, используемый для передачи данных.
Jan
-1

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

user87282
источник