web-dev-qa-db-ja.com

.zipファイルをtarで抽出できないのはなぜですか?

ほとんどの形式(gzipなど)でtarを使用してZipファイルを抽出しようとしましたが、それに対してGoogleに不満を感じたとき、tarZipまたはunzipの使用に関する推奨事項のみ。実際のところ、私のLinuxシステムにはZipユーティリティさえありませんが、unzipしかありません(なぜこれが主な推奨オプションなのか疑問に思います)。もちろんunzipは問題なく解決しましたが、ZIPファイルをtar抽出できないのはなぜですか?おそらく私は代わりに尋ねるべきです、Zipとtarでサポートされている圧縮方法の違いは何ですか?

31
Pluto

UNIXの哲学は、小さなツールを持つことです。 1つのツールが正確に1つのことを行いますが、これは特にうまくいきます。

tarツールは、いくつかのファイルを圧縮せずに1つのファイルに結合するだけです。

gzipツールは、単一のファイルを圧縮するだけです。

両方が必要な場合は、両方のツールを組み合わせて.tar.gzファイル。


Zipツールは、まったく別のものです。ファイルの束を取り、それらを単一の圧縮ファイルに結合します。完全に異なるアルゴリズム。


1つのツールでそれらをルール化する場合は、atoolを使用します。フォーマットを検出して正しいツールを呼び出すだけで、さまざまなフォーマットの whole bunch をサポートします。

33
michas

長い話:tar GNUツールは誰も気にしないのでZip/unzipをパイプしません。

長いストーリー、元のサイズ:

tarは当初、ファイルの圧縮解除と圧縮を目的としたものではなく、複数のファイルを1つの大きなファイルにアーカイブすることを目的としていました。人々はファイルをアーカイブするだけでなく、それらも圧縮したいので、データストリーム入力を受け入れて結果をファイルにドロップするコンプレッサーを介してtar出力をパイプするだけです。利益!

さて、そのようなタスクをできるだけ簡単にするために、tarは、g [zip、lzmaなどの圧縮ツールに生成されたファイルを内部でパイプ処理することを決定しました。これらのファイルは、tar。そのため、破損したファイルをtarから抽出しようとすると、tarではなく、根本的なツールエラーが表示されます。

$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file

したがって、tarがZipファイルを解凍しないわけではなく、tarが正しいツールを介してパイプする機能を持たないだけです。 Zipはすでにtarファイル形式のファイルアーカイブ機能を実行していますが、tarがそれをサポートする理由はそれほどありません。

今、あなたが投げるすべてのものを圧縮/解凍するオールインワンのツールがあります、再び、実際にそれをサポートするための正しいツールが必要です。それらがない場合、ツールは失敗します。

9
Braiam

tarファイルは、それ自体がテープアーカイブ用に設計されたファイル形式です。このフォーマットは、(たとえば)gzipまたはbzip2圧縮フォーマットを使用して圧縮できます。圧縮されたtarファイルを抽出するときは、効果的に解凍してから、圧縮されていないtarファイルから元のファイルを抽出します。

Zipファイルを解凍すると、tarファイルは含まれず、元のファイルのみが含まれます。したがって、tarがプロセスに関与する理由はまったくありません。

gzipファイルを作成するのと同じように、Zipまたはbzip2を使用してファイルを圧縮することもできます(tarを使用しない)。これらのファイルを解凍するときは、gunzipではなくtarまたはbunzip2を使用します。

3
garethTheRed

「あるものはそのままで、受け入れる必要がある」という答えもうまくいかないので、少し掘り下げただけです(何か新しいことを学ぶのはいつでもいいのではないでしょうか?)。

したがって、問題はツールがどこに行き、それらの目的が何であったかの1つであるように見えます。

私が見つけたものを言い換えて水を不必要に暗くするのではなく(難読化で私を怒らせます)、この記事を見てください: http://www.differencebetween.net/technology/difference-between-Zip-and- gzip /

TarはZipサポートを組み込むことができたと思いますが、方法論は明らかに根本的に異なります。あるいは、なぜ誰かがこのアーカイブツールを使用して別のアーカイブおよび圧縮ツールからのファイルを管理するのかと考えました(または、2つの元のコーダーの間に何らかの論争があり、zipがアプリケーションの境界を越えることを許可しないという禁止命令が提出されていました。 。はい、私は冗談です)。

1
Yuppers