ほとんどの形式(gzipなど)でtar
を使用してZipファイルを抽出しようとしましたが、それに対してGoogleに不満を感じたとき、tar
とZip
またはunzip
の使用に関する推奨事項のみ。実際のところ、私のLinuxシステムにはZip
ユーティリティさえありませんが、unzip
しかありません(なぜこれが主な推奨オプションなのか疑問に思います)。もちろんunzip
は問題なく解決しましたが、ZIPファイルをtar
抽出できないのはなぜですか?おそらく私は代わりに尋ねるべきです、Zipとtar
でサポートされている圧縮方法の違いは何ですか?
UNIXの哲学は、小さなツールを持つことです。 1つのツールが正確に1つのことを行いますが、これは特にうまくいきます。
tar
ツールは、いくつかのファイルを圧縮せずに1つのファイルに結合するだけです。
gzip
ツールは、単一のファイルを圧縮するだけです。
両方が必要な場合は、両方のツールを組み合わせて.tar.gz
ファイル。
Zip
ツールは、まったく別のものです。ファイルの束を取り、それらを単一の圧縮ファイルに結合します。完全に異なるアルゴリズム。
1つのツールでそれらをルール化する場合は、atool
を使用します。フォーマットを検出して正しいツールを呼び出すだけで、さまざまなフォーマットの whole bunch をサポートします。
長い話: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がそれをサポートする理由はそれほどありません。
今、あなたが投げるすべてのものを圧縮/解凍するオールインワンのツールがあります、再び、実際にそれをサポートするための正しいツールが必要です。それらがない場合、ツールは失敗します。
tar
ファイルは、それ自体がテープアーカイブ用に設計されたファイル形式です。このフォーマットは、(たとえば)gzip
またはbzip2
圧縮フォーマットを使用して圧縮できます。圧縮されたtarファイルを抽出するときは、効果的に解凍してから、圧縮されていないtar
ファイルから元のファイルを抽出します。
Zip
ファイルを解凍すると、tar
ファイルは含まれず、元のファイルのみが含まれます。したがって、tar
がプロセスに関与する理由はまったくありません。
gzip
ファイルを作成するのと同じように、Zip
またはbzip2
を使用してファイルを圧縮することもできます(tar
を使用しない)。これらのファイルを解凍するときは、gunzip
ではなくtar
またはbunzip2
を使用します。
「あるものはそのままで、受け入れる必要がある」という答えもうまくいかないので、少し掘り下げただけです(何か新しいことを学ぶのはいつでもいいのではないでしょうか?)。
したがって、問題はツールがどこに行き、それらの目的が何であったかの1つであるように見えます。
私が見つけたものを言い換えて水を不必要に暗くするのではなく(難読化で私を怒らせます)、この記事を見てください: http://www.differencebetween.net/technology/difference-between-Zip-and- gzip /
TarはZipサポートを組み込むことができたと思いますが、方法論は明らかに根本的に異なります。あるいは、なぜ誰かがこのアーカイブツールを使用して別のアーカイブおよび圧縮ツールからのファイルを管理するのかと考えました(または、2つの元のコーダーの間に何らかの論争があり、zipがアプリケーションの境界を越えることを許可しないという禁止命令が提出されていました。 。はい、私は冗談です)。