tarは実際にファイルを圧縮しますか、それとも単にグループ化しますか?


37

通常tar、これは圧縮ユーティリティであると想定していましたが、実際にはファイルを圧縮するのか、それともファイルを保持するISOファイルのようなものなのでしょうか?


回答:


49

Tarはアーカイブツール(Tape ARchive)であり、ファイルとそのメタデータのみを収集し、1つのファイルを生成します。後でそのファイルを圧縮する場合は、gzip / bzip2 / xzを使用できます。便宜上、tarはアーカイブを自動的に圧縮する引数を提供します。詳細については、tarのmanページをご覧ください。


9
答えのわずかな説明。これらの追加の圧縮引数を提供するのはGNU tarです。たとえば、Solaris tarは圧縮の引数を提供しません。
テロキルカネン14

5
私が見ておく理由うーん、それはだthing.tar.7z
ダックMooing

BSD tarは圧縮の引数も提供しますがz、GNU tarにはzZjJ異なる圧縮方法の個別の引数がありますが、拡張子に基づいて圧縮方法のみを受け入れて決定します。
wingedsubmariner 14

2
BSD tarのマンページを読むだけで、間違っていることがわかりました。BSDtarは、zZjJGNU tarのように圧縮に別個に使用します。ただし、圧縮解除時に圧縮を自動的に検出しますが、GNU tarは圧縮を予期しzZjJます。
wingedsubmariner 14

5
@wingedsubmariner:いいえ。GNUの現代的なバージョンはtar-zZjJオプションを必要とせずに自動的に解凍します。
ジョナサンレフラー14

17

tarアーカイブを作成します。圧縮は別の機能です。ただし tar、ファイルシステムのクラスターサイズよりも小さい多数の小さなファイルで使用すると、単独でスペース使用量を削減できます。ファイルシステムが1kbクラスターを使用する場合、単一バイトを含むファイルでも1kb(およびiノード)を消費します。tarアーカイブには、このオーバーヘッドを持っていません。

ところで、ISOファイルは実際には「ファイルを保持するファイル」ではありません-実際にはファイルシステム全体(CDで使用するように設計されたもの)のイメージであるため、その構造はかなり複雑です。


3
実際、空のファイルは1kbを消費しません。1〜1023バイトのファイルになります。
psusi

@psusiの場合、バイト1から1023のファイルの場合、常に1024を消費し、1023から1バイトの無駄が生じます。
シプルモカディム

2

元のUNIX tarコマンドはアーカイブを圧縮しませんでした。コメントで述べたように、Solaris tarは圧縮しません。HP-UX、AIX、FWIWも同様です。慣例により、非圧縮アーカイブはで終わり.tarます。

GNU / Linuxを使用すると、GNU tarを取得できます。(GNU tarは他のUNIXシステムにインストールできます。)デフォルトでは圧縮しません。しかし、それはない、あなたが提供する場合は(もGNU別)、gzipで結果のアーカイブを圧縮します-z。gzipで圧縮されたファイルの従来の接尾辞はです.gz。そのため、多くの場合、末尾が.tar.gz。その末尾は、tarが実行され、その後にgzipが続くことを意味します(例:)tar cf - .|gzip -9v > archive.tar.gz。また.tgz、などで終わるアーカイブもありますtar czf archive.tgz .

編集: www.linfo.org/tar.htmlは、GNU tarが単にgzipで圧縮するよりもはるかに多くの機能をサポートしていることを思い出させ、接尾辞は単なる慣例ではないことを思い出させました。これらには組み込みのセマンティクスがあります。また、bzip2(-jfor .bz2)および古い圧縮(-Zfor .Z)もサポートしています。次に、私はマニュアルページを見て、-a接尾辞に基づいて目的の圧縮方法を自動的にマップすることを思い出しました。

もう1つ。Linux tarのmanページに書かれているように、GNUはmanページではなくinfoページを生成しますinfo tar


GNU tarはそれ自体で圧縮を処理せず、単にgzip、bzip2、compressなどとの間でパイプをやり取りします。
-ott--

ソースを見まし。GNU tarは圧縮を処理します!この実装は、コードの再利用と適切なUNIXユーザー空間アーキテクチャの原則を活用しています。「パイプだけ」は、圧縮がツールにしっかりと統合される方法を過小評価しています。ヘルパープログラムをフォークすることが起こるという事実は技術的です。「単なるパイプ」を防御したい場合は、ファイル名と行番号を引用し、コミュニティがどちらの側を取るかを見てみましょう。
tbc0

そのソースを確認できるようになるまでに数日かかります。
-ott--

1

tarユーティリティは、引数を与えるまで圧縮しません[tar -zファイル名]。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.