gzip は .tar に整合性/CRC チェックを追加しますか?

gzip は .tar に整合性/CRC チェックを追加しますか?

コマンドを実行します:

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

次に、信頼性の低い媒体を介してファイルをコピーし、後で次のコマンドを使用して解凍します。

tar -xzf myArchive.tar.gz

tar ボールを圧縮したという事実によって、何らかの形で整合性が保証されるのでしょうか、あるいは少なくとも解凍されたコンテンツの CRC が保証されるのでしょうか?

答え1

tarそれ自体は、後で比較するためのチェックサムを記録しません。アーカイブの場合は、gzipそのtar機能を利用できます。

tarを使用しますcompress-Zアーカイブの作成時にフラグを使用すると、アーカイブの読み取りまたは書き込み時にプログラムtarが使用されます。manページから:compressgzip

標準圧縮するフォーマットは一貫性チェックを可能にするように設計されていません。

ただし、-zパラメータを使用できます。その後、tarを介してアーカイブを読み書きしますgzip。CRCgzipチェックサムを書き込みます。そのチェックサムを表示するには、次のコマンドを使用します。

$ 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:

最初の2つの形式(gzipまたはzipは)、gunzip は 32 ビットの CRC をチェックします。

答え2

はいgzip ファイル形式アーカイブが破損しているかどうかを検出するために使用できる CRC-32 チェックサムが含まれています。

もちろん、チェックサムはgzip教えてアーカイブが破損していることはわかりますが、アーカイブ内のデータを回復するのに役立つことはありません。したがって、これは主に、Web からダウンロードしたアーカイブが実際に正しくダウンロードされたかどうかを確認する場合などに便利です。

信頼性の低いメディアでアーカイブを保存または送信することに不安がある場合は、次のようなアーカイブ形式の使用を検討してください。パー実際に提供するエラー訂正エラー検出に加えて、このような形式の欠点は、エラー訂正に必要な冗長性によって必然的にファイル サイズがいくらか増加することです。

答え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=posixpaxコマンド (代替 tar リーダー)pax -r < a.tarもアーカイブの変更を認識しません。

答え4

PKZip パッケージ (win/dos) には、破損したアーカイブからファイルを回復できる PKZipFix というプログラムが付属しています。私は以前このユーティリティを使用したことがありますが、このユーティリティは、解凍できないほど中程度に破損したアーカイブからファイルを回復できます。

関連情報