なぜ.zipファイルをtarで抽出できないのですか?[閉まっている]


28

私はとzipファイルを抽出するためのフォーマットの大多数(GZIPなど)を試してみましたtar、と私はそれのためにGoogleにイライラ十分になったとき、私は、zipファイルを解凍する方法は見つからなかったtarとだけ勧告使用するzipかをunzip。実際のところ、私のLinuxシステムにはzipユーティリティさえありませんが、それだけですunzip(なぜこれが主な推奨オプションなのか疑問に思います)。もちろんunzip問題は解決しましたが、tarzipファイルを抽出できないのはなぜですか?代わりに、zipとがサポートする圧縮方法の違いは何tarですか?


1
ほんのbsdtar.zip
一言、

12
「缶切りを使ってにんじんを切ることができないのはなぜですか」という意味です。タールは独自のファイル形式を持ち、それを選択した方法で圧縮します。zipはまったく別の獣です。そのような単純な。それは「ユニックス方式」であり、すべてのニーズに応える産卵用の羊毛を含む牛乳ではなく、1つの仕事をうまく行う1つの小さなツールがあります。
ティンク14

これを明確にするために質問を少し編集しましたが、zipが圧縮形式でありtar + compressionの代わりのツールではないと思っていたことを明確に示唆していると思います。私が選んだ答えは、私が想定していたものを修正し、その答えが意見に基づくものではないことを示しました。
プルート14

あなたは持っていません。zipそのライセンスはGPLと互換性がないため、デフォルトで
venimus

回答:


29

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

このtarツールは、圧縮せずに複数のファイルを単一のファイルに結合するだけです。

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

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


このzipツールはまったく別のものです。大量のファイルを受け取り、それらを単一の圧縮ファイルに結合します。まったく異なるアルゴリズムを使用。


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


tarの機能を単に説明するのではなく、両方の目的を実際に説明していただきありがとうございます。「アーカイブ」、「圧縮」、および両方の形式を3つの異なる表にリストしたウィキペディアの記事を見て、すぐに答えを見つけました。これを明確に説明する答えを待つと思った。
冥王星

少しうるさいように、gzip圧縮アルゴリズムはで使用されるものと同じzipです。違いはgzip.tarファイルを含む任意のバイトストリームを圧縮することを意味しますが、zipPKZIPから派生およびインスパイアされ、1つのステップで(およびその順序で)圧縮およびアーカイブします。
ジョー・シーウェル

9

簡単に言えば、誰も気にしないのでtar GNUツールはzip / unzipをパイプ処理しません。

長い話、元のサイズ:

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

現在、このようなタスクを可能な限りtar簡単にするために、gzip、lzmaなどの圧縮ツールに生成されたファイルを内部でパイプ処理することを決定しましたtar。そのため、破損したファイルを抽出しようとすると、「s」tarではなく、基になるツールエラーが表示されますtar

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

だから、tarzipファイルを解凍しないのではなくtar、正しいツールを介してパイプする機能がないだけですtarがサポートする理由はほとんどありません。

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


1
さて、パイプするための適切なツールを実装している人がいないだけでなく、tarファイルは複数のファイルを1つに結合するだけです。圧縮は別です。したがって、単一のtarファイルを圧縮/解凍するだけで、tarパイプをフィルター処理します。Zipの動作は異なります。1つの統合ツールを使用して圧縮および結合します(同様のUnixプログラムはですafio)。
デロバート14

存在するオールインワン圧縮ツールのいくつかに言及することをお勧めします。例えば、GNOMEがあるfile-roller...
derobert

@derobert file-rollerは、unzip / zip / p7zipがインストールされている場合にのみzipをサポートします。それ以外の場合は、tarと同様に役に立たない。
Braiam

tarは、関連ツールもインストールしている場合にのみ、さまざまな圧縮バージョンをサポートします...マルチフォーマットアーカイブマネージャーは、異なるアーカイブフォーマットを処理するための一貫したインターフェイスを提供するため便利です。
デロバート14

@derobert正確に。
Braiam

3

tarファイルには、テープアーカイブ用に設計された自身のファイル形式です。この形式は、(たとえば)gzipまたはbzip2圧縮形式を使用して圧縮できます。圧縮されたtarファイルを抽出するときは、事実上圧縮解除してから、非圧縮tarファイルから元のファイルを抽出します。

zipファイルを抽出するtarと、その中にファイルはなく、すべての元のファイルだけがあります。したがってtar、プロセスに関与する理由はまったくありません。

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


1

「いくつかのものはただあり、それを受け入れるべきだ」という答えも私と一緒に座っているわけではないので、私は少し掘り下げました(常に何か新しいことを学ぶのは良いことではありませんか?)

そのため、この問題はツールの行き先であり、その目的は何かのようです。

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

tarにはzipサポートが組み込まれている可能性がありますが、方法論は明らかに根本的に異なります。あるいは、このアーカイブツールを使用して別のアーカイブおよび圧縮ツールからのファイルを管理する理由を考えたのかもしれません(または、元の2つのコーダー間に何らかの議論があり、zipがアプリケーションの境界を越えることを禁止する規制命令があったのかもしれません)。はい、冗談です)。

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