tar
は圧縮ユーティリティであると通常思っていましたが、よくわかりません。実際にファイルを圧縮しているのですか、それともISOファイルのように、ファイルを保持するファイルなのでしょうか。
Tarはアーカイブツール(Tape ARchive)であり、ファイルとそのメタデータをまとめて収集し、1つのファイルを生成します。後でそのファイルを圧縮する場合は、gzip/bzip2/xzを使用できます。便宜上、tarはアーカイブを自動的に圧縮する引数を提供します。詳細は tar man page をご覧ください。
tar
はアーカイブを生成します。圧縮は別の機能です。 ただしtar
を単独で使用すると、ファイルシステムのクラスターサイズよりも小さい多数の小さなファイルで使用すると、スペース使用量を削減できます。ファイルシステムが1 kbクラスターを使用する場合、1バイトを含むファイルでも1 kb(およびiノード)を消費します。 tar
アーカイブには、このオーバーヘッドはありません。
ところで、ISOファイルは実際には「ファイルを保持するファイル」ではありません。これは実際にはファイルシステム全体(もともとはCDで使用するために設計されたもの)のイメージであり、そのため、構造はかなり複雑です。
オリジナルのUNIX tarコマンドはアーカイブを圧縮しませんでした。コメントで述べたように、Solaris tarは圧縮されません。 HP-UX、AIX、FWIWも同様です。慣例により、非圧縮アーカイブは.tar
で終わります。
GNU/Linuxでは、GNU tarを取得します(GNU tarを他のUNIXシステムにインストールできます)。デフォルトでは圧縮されませんが、does-z
を指定した場合、結果のアーカイブをgzip(同じくGNU)で圧縮します。gzip圧縮ファイルの従来のサフィックスは.gz
ですなので、末尾に.tar.gz
が付いているtarball(tarアーカイブのスラング、通常は圧縮されていることを意味します)が表示されます。その末尾はtarが実行されたことを意味し、その後にtar cf - .|gzip -9v > archive.tar.gz
などのgzipが続きます。また、.tgz
で終わるアーカイブも検索します(例:tar czf archive.tgz .
)。
編集:www.linfo.org/tar.html は、GNU tarは単にgzipで圧縮するよりもはるかに多くの機能をサポートし、接尾辞は単純な規則ではないことを思い出しました。これらには組み込みのセマンティクスがあります。また、bzip2(-j
for .bz2
)と古い圧縮をサポートします(-Z
for .Z
)。次に、manページを確認したところ、-a
がサフィックスに基づいて目的の圧縮方法を自動的にマッピングすることを思い出しました。
もう1つnit。 Linuxのtarのmanページにあるように、GNUはmanページではなく情報ページを生成するので、GNU tarについてすべて学ぶには、info tar
を実行します。
tarユーティリティは、[tar -z file name]の引数を指定するまで圧縮しません。