web-dev-qa-db-ja.com

なぜtar.gzではなくtar.xzを使用する必要があるのですか? xzはロスレスデータ圧縮プログラムおよびファイル形式です

今日、私の人生で初めてtar.xzダウンロード。私はインターネットを検索してウィキペディアの記事を見つけました( xz および XZ Utils

xzのユーザーに関する興味深い引用

xzは、GNU coreutilsプロジェクト、[7] Debianシステムファミリーdeb(ファイル形式)、openSUSE、[8] Fedora、[9] Arch Linux、[10 ] Slackware、[11] FreeBSD、[12] Gentoo、[13] GNOME、[14]およびTeX Live、[15]であり、コンパイルされたLinuxカーネルを圧縮するオプションでもあります。[16] 2013年3月、カーネル。 orgは、カーネルアーカイブファイルを配布するためのデフォルトの圧縮ファイル形式としてxzの使用を発表しました。[17]

私はいつもtar.gz。いつ、なぜtar.xz?ユースケースは何ですか?

最初のコメントの後で、 同様の質問 がすでに投稿されていることがわかりました。私はよくmongodump/mongoexport(BSON/JSON)とmysqldump(SQLテキスト)を圧縮します。これらのバックアップにtar.xzを使用する利点はありますか?

13
Ivanov

gzipxzは2つの異なるアルゴリズムを使用するため、達成する圧縮のレベルと、圧縮または圧縮解除中に消費するリソースの量の点で、パフォーマンスが異なります。

generalでは、xzはより高い圧縮率を実現しますが、より多くのメモリと時間を必要とします。

私は個人的にデータのアーカイブにxzを使用しています。長い間保管しておく必要がある大きなファイル。それ以外の場合はgzipを使用します。通常はそれが速いためです。

両方をテストして、your average tar(または何でも)ファイルでのパフォーマンスを確認してください。

11
Kusalananda

xzは、近年のパッケージ管理に関しては少し標準になっています。

xzが使用するLZMA2圧縮アルゴリズムは、テキスト(および「テキストのような」)データで非常に効率的です。私は個人的にそれをほとんど何にでも使用しますが、計算のエンコード速度は問題ではありません(xzは、圧縮よりも高速に解凍されますmuch、実際にはその設計目標の1つ)。

そのため、アーカイブやバックアップ(一般的に言えば、大量に解凍されるが、データが常に圧縮されたり変更されたりするわけではないファイルなど)に最適です。 LZMA2は圧縮時にリソースを完全に軽量化しないため、これはストリーム圧縮にとってそれほど優れた決定ではありません。

しかし、私はあなたのもう1つのステートメント「コメントすべき」についてコメントしたいと思います。何をすべきかまたはすべきでないことは、何が必要かによって異なりますデータ。 xzとLZMA2は何年も前から存在していますが、互換性の理由から、フォールバックとしてgzを使用した圧縮を検討する人々はまだいます。 Trac または cgit のようなものは、.tar.gz.7z、および.tar.xzを提供します。 .tar.gzオプションが存在する場合、これは「永久に」であり、あらゆる種類の適切なフォールバック指標であるためどんなに小さくても古くても、デバイス。

反例として、 lzop は高速でリソースを節約するコンプレッサーであり、宇宙船でよく使用されますが、それ以外の場合はあまり効率的ではありません。とはいえ、あまり使われていないとは言えません。これは、ほとんどの場合、わずかな電力と計算スペースで何かをすばやく圧縮することがより重要なシステムで使用されます。

したがって、使用すべきか、使用すべきでないかは、あなたとあなたのデータを操作する人々にとって最も意味のあるものです。


最近頭に浮かんだことの1つは、manページがgzipで定期的に圧縮されていることです。たとえば、/usr/share/man/man1/を調べると、すべてが圧縮されていない場合でも、mv.1.gzに類似したファイルが多数表示されます。圧縮率が高いため、.xzファイルに切り替えることは間違いなく理にかなっていますが、.gz.xzの破棄による悪影響と比較して、スペースの増加は最小限です。その理由は、ほぼ普遍的な互換性です。 .gz圧縮ファイルを Vim で直接開いても問題なく機能し、透過的な圧縮として機能します。

5
polemon

.xz形式は、いくつかの高度な機能を提供します。同時に、多くの組み込みシステムで使用できるようにシンプルに保たれています。機能の概要は次のとおりです。

  • ランダムアクセス読み取り:データは、個別に圧縮されたブロックに分割できます。すべての.xzファイルには、ブロックのインデックスが含まれています。これにより、ブロックサイズが十分に小さい場合に、制限されたランダムアクセス読み取りが可能になります。
  • 整合性チェック:すべてのヘッダーの整合性は常にCRC32で保護されています。実際のデータの整合性は、CRC32、CRC64、SHA-256 ...
  • 連結:.gzおよび.bz2ファイルと同様に、.xzファイルをそのまま連結することができます。圧縮解除プログラムは、連結されたファイルを、通常の単一ストリーム.xzファイルであるかのように圧縮解除できます。
  • パディング:バイナリゼロを.xzファイルに追加して、埋めるために埋め込むことができます。バックアップテープ上のブロック。すべての有効な.xzファイルのサイズは4バイトの倍数であるため、パディングは4バイトの倍数である必要があります。
3
GAD3R