私はコマンドを実行します:
tar -cf myArchive.tar myDirectory/
gzip myArchive.tar
その後、多くの信頼できないメディアにファイルをコピーし、後で以下を使用して解凍します。
tar -xzf myArchive.tar.gz
tar-ballを圧縮したという事実は、それが何らかの形で完全性を保証するのでしょうか、それとも少なくとも解凍されたコンテンツのCRCでしょうか?
私はコマンドを実行します:
tar -cf myArchive.tar myDirectory/
gzip myArchive.tar
その後、多くの信頼できないメディアにファイルをコピーし、後で以下を使用して解凍します。
tar -xzf myArchive.tar.gz
tar-ballを圧縮したという事実は、それが何らかの形で完全性を保証するのでしょうか、それとも少なくとも解凍されたコンテンツのCRCでしょうか?
回答:
tarそれ自体は、後で比較するためにチェックサムを書き留めません。アーカイブを作成すればgzip、tarその機能を使用できます。
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マンページから:
最初の2つの形式(gzipまたはzipの意味)を使用する場合、gunzipは32ビットCRCをチェックします。
はい、gzipファイル形式にはCRC-32チェックサムが含まれており、これを使用してアーカイブが破損しているかどうかを検出できます。
もちろん、チェックサムによりgzip はアーカイブが破損していることを通知しますが、実際にはアーカイブ内のデータを回復するために何もしません。したがって、Webからダウンロードしたばかりのアーカイブが実際に正しくダウンロードされたことを確認するような場合に役立ちます。
信頼性の低いメディアでアーカイブを保存または送信することが実際に心配な場合は、エラー検出に加えて実際にエラー修正を提供するparなどのアーカイブ形式の使用を検討することをお勧めします。もちろん、このような形式の欠点は、エラー修正に必要な冗長性が必然的にファイルサイズを多少増やすことです。
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コマンド(代替タールリーダー)はpax -r < a.tar、アーカイブの変化に気付くことはありません。
tarが解凍時にエラーを検出すると、メッセージを出力し、ゼロ以外の終了値で終了します。この動作は、tarファイルの作成後に使用される圧縮アルゴリズムとは無関係です。
ファイルが信頼できないリンクを介して宛先に正常に送信されたことを確認する場合は、送信前にファイルのmd5合計を作成し、受信後にmd5合計を確認します。
tarそれ自体で処理されます。必要に応じて追加のレイヤーを追加できます。tarファイルの整合性が検証された場合、tarアーカイブ内のコンテンツも問題ありません。しかし、そもそもデータを転送するために使用されるプロトコルがこれらすべてを処理しなければなりません。
tar(少なくともオプションなしでは-z)整合性チェックを行わないことを認識している(または少なくとも疑っている)ようです。また、受け入れられた答えはこれを述べています。問題はgzip、(または-zオプションの使用により)整合性チェックが追加されるかどうかです。