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

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

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

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

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

tar -xzf myArchive.tar.gz

Тот факт, что я сжал tar-архив, гарантирует ли это целостность или хотя бы CRC распакованного содержимого?

решение1

tarСам по себе не записывает контрольную сумму для последующего сравнения. Если вы gzipархив tar, вы можете иметь эту функциональность.

tarиспользует compress. Если вы используете флаг -Zпри создании архива, tarбудет использовать compressпрограмму при чтении или записи архива. Из gzipman-страницы:

СтандарткомпрессФормат не был разработан с учетом возможности проверки согласованности.

Но вы можете использовать -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.

решение2

Да,формат файла gzipсодержит контрольную сумму CRC-32, которую можно использовать для обнаружения повреждения архива.

Конечно, хотя контрольная сумма позволяет gzipрассказыватьвы, что архив поврежден, на самом деле он ничего не делает, чтобы помочь вам восстановить данные внутри архива. Таким образом, он в основном полезен для таких вещей, как проверка того, что архив, который вы только что скачали из сети, действительно был скачан правильно.

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

решение3

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 reader) pax -r < a.tarтакже не замечает изменений в архиве.

решение4

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

Связанный контент