web-dev-qa-db-ja.com

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

私はコマンドを実行します:

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

次に、多くの信頼できないメディアにファイルをコピーし、後で次のようにして解凍します。

tar -xzf myArchive.tar.gz

私がtar-ballを圧縮したという事実は、何らかの形で完全性、または少なくとも解凍されたコンテンツのCRCを保証しますか?

12
Aksel Willgert

tar自体は、後で比較するためのチェックサムを書き留めません。 gziptarアーカイブを使用すると、その機能を利用できます。

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

標準のcompress形式は、整合性チェックを可能にするようには設計されていません。

ただし、-zパラメータを使用できます。次に、targzipを介してアーカイブを読み書きします。そして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マンページから:

最初の2つの形式(gzipまたはZipを意味する)を使用する場合、gunzipは32ビットCRCをチェックします。

15
chaos

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

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

信頼できないメディアを介してアーカイブを保存または送信することについて実際に心配している場合は、実際にエラー訂正を提供する par のようなアーカイブ形式の使用を検討することをお勧めしますエラー検出に加えて。もちろん、そのような形式の欠点は、エラー訂正に必要な冗長性により、必然的にファイルサイズが多少増加することです。

5
Ilmari Karonen

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形式--format=gnu --format=posixのtar-1.28(最新)を含む、すべてのtarに当てはまります。 paxコマンド(代替のtarリーダー)pax -r < a.tarも、アーカイブの変更を認識しません。

4
user115641

解凍時にtarがエラーを検出した場合、メッセージを出力し、ゼロ以外の終了値で終了します。この動作は、tarファイルの作成後に使用される圧縮アルゴリズムとは無関係です。

ファイルが信頼できないリンクを介して宛先に正常に送信されたことを確認する場合は、送信前にファイルのmd5サムを作成し、受信後にmd5サムを確認します。

2
Jan