GZipで圧縮されたいくつかのソースパッケージまたはバイナリが表示されるたびに、xzよりもgzを優先する理由がまだあるのか(2000年までのタイムトラベルを除く)、LZMA圧縮アルゴリズムの節約はかなりであり、解凍はそれほど深刻ではありませんgzip。
「最小公分母」。余分なスペースを節約しても、相互運用性が失われることはほとんどありません。ほとんどの組み込みLinuxシステムにはgzipがありますが、xzはありません。多くの古いシステムも。業界標準であるGnu Tarは、gzip、で処理するフラグ-z
およびbzip2で処理するフラグ-j
をサポートしていますが、一部の古いシステムでは---J
フラグをサポートしていません- xz、これは2ステップ操作を必要とすることを意味します(そして.tar
の構文を使用しない限り、多くの人は知らない-圧縮されていない|tar xf -
のために余分なディスクスペースが必要です)。組み込みのtar.gz
から10MB ARMは約2分かかりますが、実際には問題ありません。xz
についての手掛かりはありませんが、bzip2
は約10〜15分かかります。保存しました。
最終的な答えはアクセシビリティであり、目的の二次的な答えがあります。 XZが必ずしもGzipほど適切ではない理由:
組み込みシステムやレガシーシステムでは、XZなどのLZMA/LZMA2アーカイブを解凍するために十分なメモリが不足する可能性がはるかに高くなります。例として、XZがOpenWrtルーター向けのパッケージから400 KiB(v。Gzip)を削ることができる場合、ルーターに16 MiBのRAMがある場合、わずかなスペースの節約は何でしょうか?非常に古いコンピューターシステムでも同様の状況が発生します。 32MBのRAMを搭載した古代のSparcStation LXでBashの最新バージョンをダウンロードしてコンパイルすることを考えるとsc笑するかもしれませんが、それは起こります。
このようなシステムは通常、プロセッサが低速であり、解凍時間の増加が非常に大きくなる可能性があります。 Core i5での解凍に3秒余分にかかると、200 MHz ARMコアまたは50 MHz microSPARCの場合、Gzip圧縮が非常に高速になります。 XZまたはBzip2としても。
Gzipは、過去20年間に作成されたすべてのUNIXライクなシステム(およびほぼすべての非UNIXライクなシステム)でほぼ普遍的にサポートされています。 XZの可用性ははるかに制限されています。圧縮は、解凍する機能がなければ役に立ちません。
圧縮率を上げるには時間がかかります。圧縮時間よりも圧縮時間が重要な場合、GzipはXZに勝ります。正直なところ、lzopはGzipよりもはるかに高速であり、圧縮も大丈夫です。そのため、可能な限り高速な圧縮を必要とし、Gzipの遍在性を必要としないアプリケーションは、代わりにそれを確認する必要があります。 「tar -c * | lzop -1 | socat -u-tcp-connect:192.168.0.101:4444」などのコマンドを使用して、信頼できるLAN接続でフォルダーをすばやくシャッフルします。すなわち、インターネット上でSSHトンネルを介して説明したのと同じことを行います)。
反対に、XZ圧縮が非常に優れている状況があります。
低速リンクを介してデータを送信します。 Linux 3.7カーネルソースコードは、Gzip形式よりもXZ形式で34 MiB小さくなっています。超高速接続を使用している場合、XZを選択するとダウンロード時間を1分節約できます。安価なDSL接続または3Gセルラー接続では、ダウンロード時間を1時間以上短縮できます。
バックアップアーカイブの縮小。 Apacheのhttpd-2.4.2のソースコードを「gzip-9」と「xz -9e」で圧縮すると、Gzipアーカイブのサイズの62.7%のXZアーカイブが生成されます。現在100 GiB相当の.tar.gzアーカイブとして保存しているデータセットに同じ圧縮率が存在する場合、.tar.xzアーカイブに変換すると、なんと37.3 GiBバックアップセットから:Gzipで圧縮されたデータは55分かかりますが、バックアップデータセット全体をUSB 2.0ハードドライブにコピーすると(最大約30 MiB /秒の転送)、バックアップには20分かかります十分なCPUパワーと1回限りの圧縮速度を備えた最新のデスクトップシステムでこれらのバックアップを使用すると仮定すると、XZ圧縮を使用する方が一般的に意味があります。必要ないなら?
高度に圧縮可能な大量のデータを配布します。前述のとおり、Linux 3.7ソースコードは.tar.xzで67 MiB、.tar.gzで101 MiBです。非圧縮ソースコードは約542 MiBで、ほぼ完全にテキストです。通常、ソースコード(および一般的なテキスト)は、コンテンツの冗長性のために非常に圧縮性が高くなりますが、はるかに小さい辞書で動作するGzipのようなコンプレッサーは、辞書サイズを超える冗長性を利用できません。
最終的には、圧縮サイズ、圧縮/解凍速度、コピー/送信速度(ディスク/ネットワークからのデータの読み取り)、および圧縮/解凍の可用性という4つのトレードオフに戻ります。この選択は、「このデータで何をする予定ですか?」という質問に大きく依存しています。
また、 この関連する投稿をチェックしてください ここから繰り返すことのいくつかを学びました。
1.1GB Linuxインストールvmdkイメージで独自のベンチマークを実行しました。
rar =260MB comp= 85s decomp= 5s
7z(p7z)=269MB comp= 98s decomp=15s
tar.xz =288MB comp=400s decomp=30s
tar.bz2=382MB comp= 91s decomp=70s
tar.gz =421MB comp=181s decomp= 5s
すべての圧縮レベルは最大、CPU Intel I7 3740QM、メモリ32GB 1600、ソースと宛先RAMディスク
通常、ドキュメントなどの通常のファイルのアーカイブにはrarまたは7zを使用します。
およびシステムファイルのアーカイブには、ファイルローラーまたはtarで.tar.gzまたは.tar.xzを使用し、-zまたは-Jオプションとともに--preserveを使用して、tarでネイティブに圧縮し、アクセス許可を保持します(または.tar.7zまたは.tar.rarを使用できます)
更新:tarはACLを保持せず、通常のアクセス許可のみを保持するため、プレーン.7zに加えて、getfaclとsefaclを使用してアクセス許可とACLを手動でバックアップおよび復元することもできます。パーミッションとACLを保持し、チェックサム、整合性テスト、暗号化機能を備えています。唯一の欠点は、p7Zipがどこでも利用できないことです。
Lzip圧縮ユーティリティの作成者から:
Xzには複雑な形式があり、実行可能ファイルの圧縮に部分的に特化しており、独自の形式で拡張できるように設計されています。ここでテストした4つのコンプレッサーのうち、xzは、「1つのことを実行し、それをうまく実行する」というUnixの概念に対する唯一の異質者です。データ共有にはあまり適しておらず、長期アーカイブにはまったく適していません。
一般に、形式が複雑であればあるほど、将来デコードできる可能性は低くなります。しかし、xzフォーマットは、その悪名高い前身であるlzma単体と同様に、特別にひどく設計されています。 Xzは、gzipのほぼすべての欠陥をコピーし、脆弱な可変長整数のように、さらにいくつか追加します。 1つの可変長整数の任意のバイトのビット7の1つのビットフリップと、xzストリーム全体がカードの家のように転倒します。短命の実行可能ファイルの圧縮以外にxzを使用することはお勧めできません。
誤解しないでください。 LZMAを発明/発見してくれたIgor Pavlovに非常に感謝していますが、xzは彼のフォロワーの7Zipの人気を利用し、gzipとbzip2を不適切または不適切に設計された形式に置き換える3回目の試みです。特に、lzma-aloneのサポートがGNUとLinuxの両方で実装されたことは残念です。
正直なところ、トレーニング資料から.xz形式を知るだけです。そのため、テストを行うためにgitリポジトリを使用しました。 gitはgit://git.free-electrons.com/training-materials.gitであり、3つのトレーニングスライドも編集しました。合計ディレクトリサイズは91Mで、テキストデータとバイナリデータが混在しています。
これが私の簡単な結果です。たぶん、tar.gzを好むのは、圧縮する方がずっと速いからでしょうか?個人的には、圧縮で得られる利点があまりない場合はプレーンタールを使用します。
[02:49:32]wujj@WuJJ-PC-Linux /tmp $ time tar czf test.tgz training-materials/
real 0m3.371s
user 0m3.208s
sys 0m0.128s
[02:49:46]wujj@WuJJ-PC-Linux /tmp $ time tar cJf test.txz training-materials/
real 0m34.557s
user 0m33.930s
sys 0m0.372s
[02:50:31]wujj@WuJJ-PC-Linux /tmp $ time tar cf test.tar training-materials/
real 0m0.117s
user 0m0.020s
sys 0m0.092s
[02:51:03]wujj@WuJJ-PC-Linux /tmp $ ll test*
-rw-rw-r-- 1 wujj wujj 91944960 2012-07-09 02:51 test.tar
-rw-rw-r-- 1 wujj wujj 69042586 2012-07-09 02:49 test.tgz
-rw-rw-r-- 1 wujj wujj 60609224 2012-07-09 02:50 test.txz
[02:56:03]wujj@WuJJ-PC-Linux /tmp $ time tar xzf test.tgz
real 0m0.719s
user 0m0.536s
sys 0m0.144s
[02:56:24]wujj@WuJJ-PC-Linux /tmp $ time tar xf test.tar
real 0m0.189s
user 0m0.004s
sys 0m0.108s
[02:56:33]wujj@WuJJ-PC-Linux /tmp $ time tar xJf test.txz
real 0m3.116s
user 0m2.612s
sys 0m0.184s
同じ理由で、Windows(r)の人々は7Zipの代わりにZipファイルを使用し、一部の人はまだ他の形式の代わりにrarを使用しています...
それぞれの形式には利点があり、コンピューターを使い始めたときに学んだソリューションに固執するために人々が使用します。これを下位互換性と高速帯域幅+ GBまたはTBのハードドライブの容量に追加すると、圧縮率を上げることの利点は関係ありません。
gzはどこでもサポートされており、移植性に優れています。
xzはより新しく、広くまたは十分にサポートされるようになりました。より多くの圧縮オプションを備えたgzipよりも複雑です。
これが、人々が常にxzを使用するとは限らない理由です。 xzは圧縮に非常に長い時間を要し、些細な時間ではないため、優れた結果が得られたとしても、常に選択されるとは限りません。もう1つの弱点は、特に圧縮に大量のメモリを使用できることです。アイテムを圧縮する時間が長くなるほど、これは指数関数的であり、収益は減少します。
ただし、私の経験では、xzは大きなバイナリアイテムの圧縮レベル1で、レベル9のzlibよりも短い時間ではるかに小さな結果を生成することがよくあります。これは、zlibと同時に、xzこれは、zlibのファイルの半分のサイズです。
bzip2も同様の状況にありますが、xzにははるかに優れた利点があり、強力なウィンドウがあり、すべてのラウンドで非常に優れたパフォーマンスを発揮します。
また、gzipの重要なポイントの1つは、rsync/zsyncと相互運用できることです。これは、帯域幅に関して大きなメリットになる場合があります。 LZMA/bzip2/xzはrsyncをサポートしておらず、おそらくすぐにはサポートしません。
LZMAの特徴の1つは、静かな大きなウィンドウを使用することです。 rsync/zsyncを使いやすくするために、おそらくこのウィンドウを縮小する必要があり、圧縮パフォーマンスが低下します。
ええ、私が考えていたのは、「なぜtar.lzよりtar.gzが一般的か」(lz
が圧縮 のように見えるため)で、元の質問を修正できるということです。xz
よりも、xz
は said ですが、アーカイブには不適切な選択ですランダムアクセスのようないくつかの素晴らしい機能を提供します)。答えは、人々がそれを使用するのに慣れている「勢い」、ライブラリのサポートなどがあると思います。 lzの導入は、xzの成長速度が遅くなることを意味する場合があります。FWIW...
ただし、言われているように、lzはxzよりも遅い 解凍 のように見えます。人気の...しかし、私は野生のFWIWにいくつかの.lzファイルがあるようです...