回答:
タール
zip
zipがファイルを個別に圧縮するという事実は、特に多くの小さな類似ファイルの圧縮率に影響します。
(少なくとも、これは10年前には正確でした。)
Tarは、Zipよりもはるかに多くのメタデータを保持します。私の比較を参照してください(少し時代遅れです)。
(クリックして拡大)
Tarはテストの65%をパスしますが、Zipは17%しかパスしません。Macをお持ちの場合は、自分で試すことができるように、BSDライセンスの下でgithubでテストスイートを利用できるようにしました。Linuxの場合、メタデータがあるかどうかわからないので、これらのテストは関係ないかもしれません。
効率はさまざまな方法で測定できます。
「作成されたアーカイブを操作するツールはどのくらい一般的ですか」など、他の質問もあります。
そのため、たとえば、bzip2
作成するファイルはより小さいですがgzip
、かなり時間がかかります。また、私の経験でgzip
は、Unixライクなシステムでは普遍的ですが、そうでbzip2
はありません(非常に一般的で、通常は簡単に入手できます)。
Wimが指摘したように、tar自体は圧縮されません。tarを追加する(たとえば、.tar.gzまたは.tar.bz2を取得する)場合、tarファイル全体を一度に圧縮します。対照的に、zipは各ファイルを個別に圧縮します。
効率はワークロードに依存します。具体的には、zipを使用すると、個々のファイルに直接アクセスできます。tarでは、最初に不要な(圧縮された)ファイルをシークする必要があります。圧縮のパフォーマンスは、圧縮対象によって異なります。 tar
with bzip2
は、多くの同様のファイル(ソースディレクトリなど)の場合によく適しています。 zip
各ファイルが非常に異なるコンテンツを持っている場合、より良いかもしれません。
Zipアーカイブには、その内容の中央ディレクトリが最後に含まれています(内部に何があるかまだわからないディレクトリを事前に作成する必要はほとんどありません)。これにより、アーカイブ全体を解凍することなく、単一のファイルをすばやく抽出できます。アーカイブディレクトリを読み取り、必要なものだけを抽出します。ただし、これにはアーカイブ全体がアクセス可能であることが必要であり、ブロックデバイス(フロッピーディスク、ハードドライブ)でのみ利用可能なランダムアクセスが必要です。さらに、アーカイブディレクトリには脆弱性があります。何らかの理由でアーカイブが切り捨てられた場合、アーカイブから有用なものを抽出するために重いウィザードが必要です。
Zipアーカイブは、BBSで使用するために作成されました。ディレクトリの内容を1つの(圧縮された)ファイルにバンドルできることが重要でした。同じ理由で、ほとんどのWebサイトが今日でもダウンロードをバンドルしているように。
Tarアーカイブは、テープドライブに使用されるバックアップをバンドルするために考案されたため、シーケンシャルアクセスに使用されます。中央ディレクトリはありません。代わりに、アーカイブには、次のいくつかのブロックでどのファイルが続くかを示すヘッダーブロックが定期的に含まれています。タールのアーカイブは一挙に読むことを意図しています。単一のファイルのみを抽出する場合、アーカイブは最初から要求されたファイルが見つかるまで(最後にある場合もあります)順番に読み取られます。その上に圧縮が適用されます。tarアーカイブに適用される様々な圧縮プログラムの各(compress
、gzip
、bzip2
など)はストリームコンプレッサーであり、アーカイブのシーケンシャルな性質を変更しません。最悪の場合、抽出を開始できるまで、もう少しブロックが必要になります。
これは些細な違いのように聞こえるかもしれませんが、実際には哲学の正反対を表しています。zipアーカイブでは、ファイル全体を手元に置いて必要な処理を行う必要が常にありますが、tarアーカイブはパイプラインにストリーミングできます。大きなtarアーカイブをダウンロードして、最初の数ブロックが入ったらすぐに解凍を開始できます(探しているファイルを取得したらすぐにダウンロードを中断できます)。Zipアーカイブの場合、アーカイブの最後にあるアーカイブディレクトリが表示されるまで待つ必要があります。しかし、私は一度やるはるかに速くtarファイルからなり、そこから部分コンテンツを抽出し、手元のファイル全体を持っています。
どちらの形式にも、どこでどのように使用されるかに応じて、1つの非常に強い点があります。パイプライン(つまり、あるプロセスから別のプロセスへのストリーミングデータの概念)は実際にはUnixの世界にしか存在しないため、tarアーカイブの主な利点は他のシステムでは失われます。しかし、tarアーカイブはより柔軟であるため、選択肢があればいつでもそれらを好むのです。