私はコマンドを実行します:
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
マンページから:
標準のcompress形式は、整合性チェックを可能にするようには設計されていません。
ただし、-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形式--format=gnu --format=posix
のtar-1.28(最新)を含む、すべてのtarに当てはまります。 pax
コマンド(代替のtarリーダー)pax -r < a.tar
も、アーカイブの変更を認識しません。
解凍時にtarがエラーを検出した場合、メッセージを出力し、ゼロ以外の終了値で終了します。この動作は、tarファイルの作成後に使用される圧縮アルゴリズムとは無関係です。
ファイルが信頼できないリンクを介して宛先に正常に送信されたことを確認する場合は、送信前にファイルのmd5サムを作成し、受信後にmd5サムを確認します。