英語フランス語スペイン語

Ad


OnWorksファビコン

xzcat - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで xzcat を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド xzcat です。

プログラム:

NAME


xz、unxz、xzcat、lzma、unlzma、lzcat - .xz および .lzma ファイルの圧縮または解凍

SYNOPSIS


xz [オプション] ... [file] ...

unxz に相当します xz -解凍.
xzcat に相当します xz -解凍 --stdout.
lzma に相当します xz --format=lzma.
アンズマ に相当します xz --format=lzma -解凍.
lzcat に相当します xz --format=lzma -解凍 --stdout.

ファイルを解凍する必要があるスクリプトを作成する場合は、常に
xz 適切な引数を指定して (xz -d or xz -dc) 名前の代わりに unxz & xzcat.

DESCRIPTION


xz は、次のようなコマンド ライン構文を持つ汎用データ圧縮ツールです。 gzip(1)
& bzip2(1)。 ネイティブのファイル形式は、 .xz フォーマットですが、レガシー .lzma 使用されるフォーマット
LZMA Utils によるものと、コンテナ形式ヘッダーのない生の圧縮ストリームも含まれます。


xz それぞれを圧縮または解凍します file 選択した動作モードに応じて。 いいえの場合
ファイル 与えられたり、 file is -, xz 標準入力から読み取り、処理されたデータを書き込みます
標準出力に。 xz 拒否されます(エラーを表示してスキップします) file) 書く
圧縮データを端末の場合は標準出力に出力します。 同様に、 xz 読むことを拒否するだろう
端末の場合は標準入力からの圧縮データ。

そうでない限り --stdout 指定されている、 ファイル 以外の - という名前の新しいファイルに書き込まれます。
ソースから派生した file 名前:

・圧縮する場合、対象ファイル形式の拡張子(.xz or .lzma) が追加されます
ソースファイル名を使用してターゲットファイル名を取得します。

· 解凍すると、 .xz or .lzma ファイル名からサフィックスが削除されて、
ターゲットのファイル名。 xz 接尾辞も認識します .txz & .tlzで置き換えます。
  。タール サフィックス。

対象ファイルが既に存在する場合はエラーが表示され、 file スキップされます。

標準出力に書き込まない限り、 xz 警告が表示され、スキップされます file のいずれかがあれば
以下が適用されます。

· File は通常のファイルではありません。 シンボリック リンクはたどられないため、
通常のファイルとみなされます。

· File 複数のハードリンクがあります。

· File setuid、setgid、またはスティッキー ビットが設定されています。

· 動作モードは圧縮に設定されており、 file ターゲットのサフィックスがすでにあります
ファイル形式 (.xz or .txz に圧縮するとき .xz フォーマット、および .lzma or .tlz いつ
に圧縮する .lzma 形式)。

・動作モードが減圧に設定されており、 file いずれの接尾辞もありません
サポートされているファイル形式 (.xz, .txz, .lzmaまたは .tlz).

圧縮または解凍が正常に完了したら、 file, xz 所有者、グループ、
ソースからの権限、アクセス時間、および変更時間 file ターゲットファイルに。
グループのコピーが失敗した場合、ターゲット ファイルがコピーされないように権限が変更されます。
ソースにアクセスする権限を持たなかったユーザーもアクセスできるようになる file. xz
アクセス制御リストや拡張属性などの他のメタデータのコピーはサポートされていません
はまだありません。

ターゲット ファイルが正常に閉じられると、ソース ファイルが file そうでない場合は削除されます
- 保つ と指定されました。 起源 file 出力が書き込まれる場合、削除されることはありません
標準出力。

送信 署名情報 or シグSR1 xz プロセスは進行状況情報を出力します
標準誤差。 標準エラーが端末である場合、これは限られた用途でのみ使用されます。
-詳細 自動的に更新される進行状況インジケーターが表示されます。

メモリ 使用
メモリ使用量は、 xz 内容に応じて、数百キロバイトから数ギガバイトまで変化します
圧縮設定について。 ファイルの圧縮時に使用される設定によって、
デコンプレッサーのメモリ要件。 通常、デコンプレッサーには 5 % ~ 20 % のデータが必要です。
ファイルの作成時に圧縮プログラムが必要としたメモリの量。 例えば、
で作成したファイルを解凍する xz -9 現在、65 MiB のメモリが必要です。 それでも、それは
持つことが可能 .xz ファイルを解凍するには数ギガバイトのメモリが必要です。

特に古いシステムのユーザーは、非常に大量のメモリを使用する可能性があることに気づくかもしれません。
迷惑。 不快な驚きを避けるために、 xz メモリ使用量リミッターが内蔵されており、
これはデフォルトでは無効になっています。 一部のオペレーティング システムでは、
プロセスのメモリ使用量に依存すると、十分な柔軟性があるとはみなされませんでした (例:
ulimit(1) 仮想メモリを制限すると機能不全に陥る傾向があります mmap(2))。

メモリ使用量リミッターはコマンド ライン オプションで有効にできます。 --memlimit=制限.
多くの場合、環境を設定してデフォルトでリミッターを有効にした方が便利です。
変数 XZ_DEFAULTS、例えば XZ_DEFAULTS=--memlimit=150MiB。 を設定することが可能です。
を使用して圧縮と解凍を個別に制限します。 --memlimit-compress=制限 &
--memlimit-decompress=制限。 これら XNUMX つのオプションを屋外で使用する XZ_DEFAULTS ほとんど役に立たない
なぜなら、XNUMX回の実行で xz 圧縮と解凍の両方を行うことはできません。
--memlimit=制限 (または -M 制限) コマンドラインで入力する方が短くなります。

解凍時に指定したメモリ使用量制限を超えた場合、 xz が表示されます
エラーが発生し、ファイルの解凍に失敗します。 圧縮時に制限を超えた場合、 xz
制限を超えないように設定を縮小しようとします (ただし、
--format=生 or --調整なし)。 こうすることで、制限に達しない限り操作は失敗しません。
非常に少ない。 設定のスケーリングが圧縮と一致しないステップで行われる
レベルのプリセット。たとえば、制限が必要な量よりわずかに小さい場合など。 xz -9,
設定は少しだけ縮小されますが、完全に縮小されるわけではありません。 xz -8.

連結 & パディング   .xz ファイル
連結も可能です .xz ファイルをそのままにします。 xz そのようなファイルをあたかも解凍します。
独身だった .xz ファイルにソフトウェアを指定する必要があります。

連結された部分の間、または最後の部分の後にパディングを挿入することができます。
パディングは null バイトで構成され、パディングのサイズは次の倍数である必要があります。
XNUMXバイト。 これは、たとえば次のような場合に便利です。 .xz ファイルは測定する媒体に保存されます
ファイル サイズは 512 バイト ブロック単位です。

連結とパディングは許可されません .lzma ファイルまたは生のストリーム。

OPTIONS


整数 接尾辞 & 特別
整数引数が予期されるほとんどの場所では、オプションのサフィックスがサポートされています。
大きな整数を簡単に示すことができます。 整数と
サフィックス。

KiB 整数に 1,024 (2^10) を掛けます。 Ki, k, kB, K, KB として受け入れられます
の同義語 KiB.

Eb 整数に 1,048,576 (2^20) を掛けます。 Mi, m, M, MB として受け入れられます
の同義語 Eb.

GiB 整数に 1,073,741,824 (2^30) を掛けます。 Gi, g, G, GB として受け入れられます
の同義語 GiB.

特別な価値 マックス によってサポートされる最大整数値を示すために使用できます。
オプションを選択します。

操作 モード
複数の動作モード オプションが指定されている場合は、最後のものが有効になります。

-z, -圧縮
圧縮します。 これは、動作モード オプションが指定されていない場合のデフォルトの動作モードです。
指定されており、コマンド名からは他の操作モードが暗示されていません (
例、 unxz 含意する -解凍).

-d, -解凍, -解凍
解凍します。

-t, - テスト
圧縮されたファイルの整合性をテストする ファイル。 このオプションは以下と同等です -解凍
--stdout ただし、解凍されたデータは書き込まれずに破棄されます。
標準出力。 ファイルは作成または削除されません。

-l, - リスト
圧縮に関する情報を出力します ファイル。 非圧縮出力は生成されません。
ファイルは作成または削除されません。 リストモードでは、プログラムは
標準入力またはその他の検索できないソースからの圧縮データ。

デフォルトのリストには、次の基本情報が表示されます。 ファイル、XNUMX 行に XNUMX つのファイル。 取得するため
さらに詳しい情報については、 -詳細 オプション。 さらに詳しく
情報、使用 -詳細 XNUMX 回実行しますが、これは遅くなる可能性があることに注意してください。
すべての追加情報には多くのシークが必要です。 詳細出力の幅が超過しています
80 文字なので、出力を次のようにパイプします。 less -S あれば便利かもしれません
ターミナルの幅が足りません。

正確な出力は次のように異なる場合があります。 xz バージョンと異なるロケール。 機械の場合は~
読みやすい出力、 - ロボット - リスト 使用すべきです。

操作 修飾子
-k, - 保つ
入力ファイルは削除しないでください。

-f, - 力
このオプションにはいくつかの効果があります。

・対象ファイルが既に存在する場合は、圧縮する前に削除するか、
解凍中。

· 入力が通常のファイルへのシンボリック リンクである場合でも圧縮または解凍します。
複数のハード リンクがあるか、setuid、setgid、またはスティッキー ビットが設定されています。 の
setuid、setgid、およびスティッキー ビットはターゲット ファイルにコピーされません。

・一緒に使用する場合 -解凍 --stdout & xz の種類を認識できません
ソースファイルをそのまま標準出力にコピーします。 これにより、 xzcat
- 力 のように使用される cat(1) 圧縮されていないファイルの場合 xz.
将来的には、 xz 新しい圧縮ファイル形式をサポートする可能性があります。
make xz ファイルをそのまま標準ファイルにコピーするのではなく、より多くの種類のファイルを解凍します。
出力。 --format =形式でアーカイブしたプロジェクトを保存します. 制限するために使用できます xz 単一のみを解凍するには
ファイル形式。

-c, --stdout, --標準出力へ
圧縮または解凍されたデータをファイルではなく標準出力に書き込みます。
これは意味します - 保つ.

--単一ストリーム
最初の部分だけを解凍する .xz ストリームし、残っている可能性のある入力を黙って無視します
ストリームに続くデータ。 通常、このような末尾のゴミは、 xz を表示する
エラー。

xz 複数のストリームを解凍することはありません .lzma ファイルまたは生のストリームですが、
このオプションでもまだ xz の後に続く可能性のあるデータを無視します .lzma file
または生のストリーム。

動作モードがそうでない場合、このオプションは効果がありません。 -解凍 or - テスト.

--スパースなし
スパースファイルの作成を無効にします。 デフォルトでは、通常の形式に解凍する場合、
ファイル、 xz 解凍されたデータに長いデータが含まれている場合、ファイルをスパースにしようとします
バイナリ ゼロのシーケンス。 長い限り標準出力に書き込むときにも機能します。
標準出力は通常のファイルと特定の追加条件に接続されるため、
安全にするために満たされています。 スパース ファイルを作成すると、ディスク容量が節約され、速度が向上する可能性があります
ディスク I/O の量を減らして解凍します。

-S .suf, -サフィックス=.suf
圧縮する場合は、 .suf の代わりにターゲットファイルのサフィックスとして .xz or
.lzma。 標準出力に書き込まず、ソース ファイルに既に
サフィックス .sufの場合、警告が表示され、ファイルはスキップされます。

解凍時に拡張子が付いているファイルを認識します .suf のファイルに加えて、
  .xz, .txz, .lzmaまたは .tlz サフィックス。 ソースファイルに接尾辞が付いている場合 .suf
ターゲットファイル名を取得するためにサフィックスが削除されます。

生のストリームを圧縮または解凍するとき (--format=生)、サフィックスは次のとおりです。
デフォルトがないため、標準出力に書き込む場合を除き、常に指定します。
生ストリームのサフィックス。

-ファイル[=file]
処理するファイル名を読み取ります file; もし file 省略された場合、ファイル名が読み取られます
標準入力から。 ファイル名は改行文字で終了する必要があります。 あ
ダッシュ (-) は通常のファイル名として解釈されます。 標準入力という意味ではありません。 もしも
ファイル名はコマンドライン引数としても指定され、ファイル名はコマンドライン引数の前に処理されます。
読み取られたファイル名 file.

--files0[=file]
これは次と同じです -ファイル[=file] ただし、各ファイル名は終了する必要があります
ヌル文字を使用します。

Basic file 形式でアーカイブしたプロジェクトを保存します. & オプション
-F 形式でアーカイブしたプロジェクトを保存します., --format =形式でアーカイブしたプロジェクトを保存します.
ファイルを指定してください 形式でアーカイブしたプロジェクトを保存します. 圧縮または解凍するには:

オート これがデフォルトです。 圧縮すると、 オート に相当します xz。 時
解凍すると、入力ファイルの形式が自動的に検出されます。 ノート
その生のストリーム (で作成された) --format=生) は自動検出できません。

xz に圧縮します .xz ファイル形式、または受け入れるのみ .xz ファイルの場合
解凍中。

lzma, 一人で
レガシーに圧縮する .lzma ファイル形式、または受け入れるのみ .lzma ファイルの場合
解凍中。 別名 一人で 後方用に提供されています
LZMA Utils との互換性。

生のストリーム (ヘッダーなし) を圧縮または圧縮解除します。 これは次のことを目的としています
上級ユーザーのみ。 生のストリームをデコードするには、次を使用する必要があります --format=生 &
通常は保存されるフィルターチェーンを明示的に指定します。
コンテナヘッダー内。

-C チェック, --チェック=チェック
整合性チェックのタイプを指定します。 小切手は次から計算されます。
非圧縮データであり、 .xz ファイル。 このオプションは次の場合にのみ効果があります。
に圧縮する .xz フォーマット; の .lzma この形式は整合性チェックをサポートしていません。
整合性チェック (存在する場合) は、 .xz ファイルが解凍されます。

サポート チェック タイプ:

なし 整合性チェックをまったく計算しません。 これは通常、悪い考えです。
これは、データの整合性が他の手段で検証される場合に役立ちます。
とにかく。

crc32 IEEE-32 (イーサネット) の多項式を使用して CRC802.3 を計算します。

crc64 ECMA-64 の多項式を使用して CRC182 を計算します。 これがデフォルトです。
CRC32 よりも破損したファイルの検出がわずかに優れているため、
速度の差は無視できます。

sha256 SHA-256を計算します。 これは CRC32 や CRC64 よりも若干遅いです。

の完全性 .xz ヘッダーは常に CRC32 で検証されます。 不可能です
変更するか無効にします。

-0 ... -9
圧縮プリセットレベルを選択します。 デフォルトは -6。 複数のプリセットレベルの場合
を指定すると、最後のものが有効になります。 カスタム フィルター チェーンがすでに存在する場合
指定されている場合、圧縮プリセット レベルを設定すると、カスタム フィルター チェーンがクリアされます。

プリセット間の違いは、 gzip(1)と
bzip2(1)。 選択した圧縮設定により、メモリ要件が決まります。
したがって、高すぎるプリセット レベルを使用すると、デコンプレッサーを使用するのが困難になる可能性があります。
RAM が少ない古いシステムでファイルを解凍します。 具体的には、 それはだ a
良い アイデア 〜へ やみくもに つかいます -9 for すべてのもの よくあることのように gzip(1)と
bzip2とします。

-0 ... -3
これらはやや高速なプリセットです。 -0 よりも速い場合もあります gzip -9 while
圧縮率が大幅に向上しました。 より高いものは、多くの場合、以下に匹敵する速度を持っています。
bzip2(1) 圧縮率は同等以上ですが、結果は
圧縮されるデータの種類に大きく依存します。

-4 ... -6
デコンプレッサーのメモリ使用量を維持しながら、良好な圧縮から非常に良好な圧縮まで
古いシステムでも合理的です。 -6 はデフォルトであり、通常はこれで適切です
たとえば、上でも解凍できる必要があるファイルを配布する場合に選択します。
16 MiB RAM のみを搭載したシステム。 (-5e or -6e も検討する価値があるかもしれません。
見る - 過激.)

-7 ... -9
これらは次のようなものです -6 ただし、コンプレッサーとデコンプレッサーのメモリが大きくなります
要件。 これらは、より大きなファイルを圧縮する場合にのみ役立ちます。
それぞれ 8 MiB、16 MiB、および 32 MiB。

同じハードウェアでは、解凍速度はほぼ一定の速度になります。
XNUMX 秒あたりの圧縮データのバイト数。 つまり、圧縮率が高ければ高いほど、
通常、解凍は速くなります。 これはまた、
XNUMX 秒あたりに生成される非圧縮出力は大きく異なる場合があります。

次の表は、プリセットの機能をまとめたものです。

プリセット DictSize CompCPU CompMem DecMem
-0 256 KiB 0 3 MiB 1 MiB
-1 1 MiB 1 9 MiB 2 MiB
-2 2 MiB 2 17 MiB 3 MiB
-3 4 MiB 3 32 MiB 5 MiB
-4 4 MiB 4 48 MiB 5 MiB
-5 8 MiB 5 94 MiB 9 MiB
-6 8 MiB 6 94 MiB 9 MiB
-7 16 MiB 6 186 MiB 17 MiB
-8 32 MiB 6 370 MiB 33 MiB
-9 64 MiB 6 674 MiB 65 MiB

列の説明:

· DictSize は LZMA2 辞書のサイズです。 を使用するのはメモリの無駄です
圧縮されていないファイルのサイズより大きい辞書。 これがその理由です
プリセットの使用を避けるのが良いでしょう -7 ... -9 本当に必要がないとき。
At -6 それ以下の場合、無駄になるメモリの量は通常、問題にならないほど十分に低いです。
問題。

· CompCPU は、影響を与える LZMA2 設定を簡略化して表現したものです。
圧縮速度。 辞書のサイズは速度にも影響するため、CompCPU が
レベルも同様 -6 ... -9、レベルが高くても、少し遅くなる傾向があります。
さらに速度を落とし、圧縮率を高めるには、次を参照してください。 - 過激.

· CompMem には、シングルスレッド モードでのコンプレッサーのメモリ要件が含まれています。
間でわずかに異なる場合があります xz バージョン。 一部のメモリ要件
将来のマルチスレッド モードは、シングルスレッド モードよりも大幅に高速になる可能性があります。
スレッドモード。

· DecMem には、デコンプレッサーのメモリ要件が含まれています。 つまり、圧縮
設定により、解凍プログラムのメモリ要件が決まります。 正確な
デコンプレッサーのメモリ使用量は LZMA2 辞書のサイズよりわずかに大きくなりますが、
表内の値は、次の完全な MiB に切り上げられています。

-e, - 過激
選択した圧縮プリセット レベルの低速バージョンを使用します (-0 ... -9)へ
圧縮率がもう少し良くなればいいのですが、運が悪いとこうなる可能性があります。
また悪化させます。 デコンプレッサーのメモリ使用量は影響を受けませんが、コンプレッサー
メモリ使用量はプリセットレベルで少し増加します -0 ... -3.

辞書サイズが 4 MiB と 8 MiB の XNUMX つのプリセットがあるため、プリセット -3e
& -5e よりわずかに速い設定 (CompCPU が低い) を使用します。 -4e & -6e,
それぞれ。 そうすれば、同じプリセットは XNUMX つなくなります。

プリセット DictSize CompCPU CompMem DecMem
-0e 256 KiB 8 4 MiB 1 MiB
-1e 1 MiB 8 13 MiB 2 MiB
-2e 2 MiB 8 25 MiB 3 MiB
-3e 4 MiB 7 48 MiB 5 MiB
-4e 4 MiB 8 48 MiB 5 MiB
-5e 8 MiB 7 94 MiB 9 MiB
-6e 8 MiB 8 94 MiB 9 MiB
-7e 16 MiB 8 186 MiB 17 MiB
-8e 32 MiB 8 370 MiB 33 MiB
-9e 64 MiB 8 674 MiB 65 MiB

たとえば、8 MiB 辞書を使用するプリセットは合計 XNUMX つあります。
最も速いものから最も遅いものへの順序は -5, -6, -5e, -6e.

- 速い
- 一番 これらはやや誤解を招きやすいエイリアスです。 -0 & -9、 それぞれ。 これらは
LZMA Utils との下位互換性のためにのみ提供されています。 これらの使用は避けてください
オプション。

--ブロックサイズ=サイズ
に圧縮すると、 .xz 形式で、入力データをブロックに分割します。 サイズ バイト
ブロックは互いに独立して圧縮されます。

--memlimit-compress=制限
圧縮時のメモリ使用量の制限を設定します。 このオプションを複数指定した場合
回では、最後のものが有効になります。

圧縮設定が 制限, xz 設定を下方調整します
制限を超えないようにして、自動的に通知を表示します。
調整が行われました。 で圧縮する場合、そのような調整は行われません。
--format=生 または --調整なし が指定されています。 そういった場合、エラーとなるのが、
表示され、 xz 終了ステータス 1 で終了します。

  制限 は複数の方法で指定できます。

制限 バイト単位の絶対値を指定できます。 次のような整数接尾辞を使用する Eb
役に立つかもしれません。 例: --memlimit-compress=80MiB

制限 物理メモリ (RAM) の合計に対する割合として指定できます。 これ
特に、 XZ_DEFAULTS の環境変数
異なるコンピュータ間で共有されるシェル初期化スクリプト。 それか
より多くのメモリを備えたシステムでは、制限が自動的に大きくなります。 例:
--memlimit-compress=70%

制限 に設定することでデフォルト値にリセットできます。 0。 これは
現時点では、 制限 〜へ マックス (メモリ使用量制限なし)。 一度
マルチスレッドのサポートが実装されていますが、違いがある可能性があります。 0
& マックス マルチスレッドの場合は、使用することをお勧めします 0 マックス
詳細が決まるまで。

セクションも参照してください メモリ 使用.

--memlimit-decompress=制限
解凍時のメモリ使用量の制限を設定します。 これは、 - リスト モード。 もしも
を超えないと操作はできません。 制限, xz エラーが表示されます
ファイルの解凍は失敗します。 見る --memlimit-compress=制限 可能性のための
を指定する方法 制限.

-M 制限, --memlimit=制限, --メモリ=制限
これは次のように指定するのと同じです --memlimit-compress=制限
--memlimit-decompress=制限.

--調整なし
圧縮設定がメモリ使用量を超える場合、エラーを表示して終了します。
限界。 デフォルトでは、メモリ使用量が少なくなるように設定を下方調整します。
制限を超えていません。 RAW作成時は自動調整は常に無効になります
ストリーム (--format=生).

-T スレッド, --threads =スレッド
使用するワーカー スレッドの数を指定します。 実際のスレッド数は次のようになります。
未満 スレッド より多くのスレッドを使用するとメモリ使用量の制限を超える場合。

マルチスレッド & 減圧   実装 まだ、 so この オプション
持っています いいえ 効果 for 今。

As of 書き込み (2010-09-27)、 it していない 決定しました if スレッド 意志 be 中古 by
デフォルト on マルチコア システム かつて サポート for スレッディング 持っています 実装されました。
コメント   ようこそ。 複雑な要因は、多くのスレッドを使用すると、
メモリ使用量が大幅に増加します。 マルチスレッド化される場合は、
デフォルトでは、おそらくシングルスレッドとマルチスレッドのモードが一致するように行われるでしょう。
同じ出力が生成されるため、圧縮率は次の場合に大きな影響を受けません。
スレッド化はデフォルトで有効になります。

カスタム コンプレッサー filter チェーン
カスタム フィルター チェーンを使用すると、圧縮設定を詳細に指定できます。
プリセットレベルに関連付けられた設定に依存します。 カスタムフィルターチェーンが
指定された圧縮プリセット レベル オプション (-0 ... -9 & - 過激)は黙って
無視されます。

フィルター チェーンは、コマンド ラインでのパイプ処理に相当します。 圧縮するときは、
非圧縮入力は最初のフィルターに送られ、その出力は次のフィルターに送られます (
どれでも)。 最後のフィルターの出力は圧縮ファイルに書き込まれます。 最大
チェーン内のフィルターの数は XNUMX ですが、通常、フィルター チェーンには XNUMX つまたは XNUMX つしかありません。
フィルタ

多くのフィルタには、フィルタ チェーン内のどこに配置できるかについて制限があります。一部のフィルタでは、
チェーン内の最後のフィルターとしてのみ機能するもの、最後以外のフィルターとしてのみ機能するもの、および機能するもの
チェーン内のどの位置でも可能です。 フィルターによっては、この制限は固有のものであるか、
フィルタの設計に問題があるか、セキュリティの問題を防ぐために存在します。

カスタム フィルター チェーンは、XNUMX つ以上のフィルター オプションをその順序で使用して指定します。
フィルタチェーンで必要とされます。 つまり、フィルター オプションの順序は重要です。
生のストリームをデコードするとき (--format=生)、フィルターチェーンは同じ順序で指定されます
圧縮時に指定されたとおりです。

フィルターはフィルター固有のものを受け取ります オプション カンマ区切りのリストとして。 余分なカンマ オプション
無視されます。 すべてのオプションにはデフォルト値があるため、必要な値のみを指定する必要があります
変更します。

--lzma1[=オプション]
--lzma2[=オプション]
LZMA1 または LZMA2 フィルターをフィルター チェーンに追加します。 これらのフィルターは次の目的でのみ使用できます。
チェーン内の最後のフィルター。

LZMA1 はレガシー フィルタであり、サポートされているのはほぼレガシーのみです。 .lzma
LZMA1 のみをサポートするファイル形式。 LZMA2 は、LZMA1 の更新バージョンです。
LZMA1 のいくつかの実用的な問題を修正します。 の .xz 形式は LZMA2 を使用しており、サポートされていません
まったくLZMA1。 LZMA1 と LZMA2 の圧縮速度と比率は、実質的に
同じ。

LZMA1 と LZMA2 は同じセットを共有します。 オプション:

プリセット=プリセット
LZMA1 または LZMA2 をすべてリセットします オプション 〜へ プリセット. プリセット 整数で構成され、
この後には XNUMX 文字のプリセット修飾子が続く場合があります。 整数は次のとおりです
から 0 〜へ 9、コマンドラインオプションと一致します -0 ... -9。 唯一の
現在サポートされている修飾子は e、一致する - 過激。 デフォルト
プリセット is 6、LZMA1 の残りのデフォルト値、または
lzma2 オプション 取られます。

辞書=サイズ
辞書(履歴バッファ) サイズ 最近のバイト数を示します
処理された非圧縮データはメモリに保持されます。 アルゴリズムは次のことを試みます
非圧縮データ内で繰り返されるバイト シーケンス (一致) を検出し、置換します。
現在ディクショナリにあるデータへの参照を含めます。 大きな方
辞書を調べれば調べるほど、一致するものが見つかる可能性が高くなります。 したがって、増加する
辞書 サイズ 通常、圧縮率は向上しますが、辞書は大きくなります
圧縮されていないファイルはメモリの無駄です。

代表的な辞書 サイズ 64 KiB ~ 64 MiB です。 最小値は 4 KiB です。
現在、圧縮の最大値は 1.5 GiB (1536 MiB) です。 の
デコンプレッサーはすでに 4 GiB 未満の最大 XNUMX バイトの辞書をサポートしています。
これは、LZMA1 および LZMA2 ストリーム形式の最大値です。

辞書 サイズ とマッチファインダー (mf) を合わせてメモリ使用量を決定します。
LZMA1 または LZMA2 エンコーダー。 同じ(またはより大きな)辞書 サイズ is
圧縮時に使用された、解凍に必要なメモリ
デコーダの使用法は、次の場合に使用される辞書のサイズによって決まります。
圧縮中。 の .xz ヘッダーには辞書が格納されます サイズ 2^ のいずれかn または 2^n
+ 2^(n-1) したがって、これらは サイズ 圧縮にはある程度好ましいです。 他の
サイズ に保存すると切り上げられます。 .xz ヘッダー。

lc=lc リテラルコンテキストビットの数を指定します。 最小値は 0 で、
最大は 4 です。 デフォルトは 3 です。さらに、次の合計は lc & lp してはいけません
4を超える。

一致としてエンコードできないすべてのバイトはリテラルとしてエンコードされます。 それか
つまり、リテラルは、一度に 8 つずつエンコードされる単純な XNUMX ビット バイトです。

リテラルコーディングでは、最高の lc のビット
前の非圧縮バイトは次のバイトと相関します。 たとえば、典型的な場合
英語のテキストでは、大文字の後に小文字が続くことがよくありますが、
通常、小文字の後には別の小文字が続きます。
US-ASCII 文字セットでは、上位 010 ビットは大文字の XNUMX です。
小文字の場合は文字と 011。 いつ lc 少なくとも 3、リテラル
コーディングでは、非圧縮データのこの特性を利用できます。

通常はデフォルト値 (3) が適切です。 最大限の圧縮が必要な場合は、
test lc=4。 少し役立つこともありますが、圧縮されることもあります
悪い。 悪化する場合は、次のようなテストを行ってください。 lc=2 のためにペンを持つ時間も見つけています。

lp =lp リテラル位置ビット数を指定します。 最小値は 0 で、
最大は 4 です。 デフォルトは 0 です。

Lp 非圧縮データでどのような種類のアライメントが想定されるかに影響します。
リテラルのエンコード。 見る pb アライメントの詳細については、以下を参照してください。

pb=pb 位置ビット数を指定します。 最小値は 0、最大値は 4 です。
デフォルトは 2 です。

Pb 非圧縮データ内でどのような種類のアライメントが想定されるかに影響します。
全般的。 デフォルトは 2 バイトのアライメント (XNUMX^pb=2^2=4)、多くの場合、
他に良い推測がない場合には良い選択です。

アライメントがわかっている場合の設定 pb それに応じてファイルサイズが小さくなる可能性があります
少し。 たとえば、XNUMX バイト アラインメントを持つテキスト ファイル (US-ASCII、
ISO-8859-*、UTF-8)、設定 pb=0 圧縮をわずかに改善できます。 ために
UTF-16テキスト、 pb=1 良い選択です。 アライメントが次のような奇数の場合
3バイト、 pb=0 最良の選択かもしれません。

想定されるアライメントは調整可能ですが、 pb & lp、LZMA1、および
LZMA2 は依然として 16 バイト アライメントをわずかに優先します。 取り入れてみる価値はあるかもしれない
頻繁に圧縮される可能性のあるファイル形式を設計する場合に考慮してください。
LZMA1 または LZMA2 を使用します。

MF=mf マッチ ファインダーは、エンコーダーの速度、メモリ使用量、および
圧縮率。 通常、ハッシュ チェーン マッチ ファインダーはバイナリよりも高速です
ツリーマッチファインダー。 デフォルトは、 プリセット: 0 回の使用 hc3、1~3回使用
hc4、残りは使用します bt4.

次の一致ファインダーがサポートされています。 以下のメモリ使用量の計算式
は大まかな近似値であり、実際の値に最も近い値です。 辞書  
XNUMXの累乗。

hc3 2 バイトおよび 3 バイトのハッシュを使用したハッシュ チェーン
の最小値 nice:007
メモリ使用量:
辞書 * 7.5 (場合 辞書 <= 16 MiB);
辞書 * 5.5 + 64 MiB (の場合) 辞書 > 16 MiB)

hc4 2、3、4 バイトのハッシュによるハッシュ チェーン
の最小値 nice:007
メモリ使用量:
辞書 * 7.5 (場合 辞書 <= 32 MiB);
辞書 * 6.5 (場合 辞書 > 32 MiB)

bt2 2バイトハッシュを使用したバイナリツリー
の最小値 nice:007
メモリ使用量: 辞書 * 9.5

bt3 2 バイトおよび 3 バイトのハッシュを使用したバイナリ ツリー
の最小値 nice:007
メモリ使用量:
辞書 * 11.5 (場合 辞書 <= 16 MiB);
辞書 * 9.5 + 64 MiB (の場合) 辞書 > 16 MiB)

bt4 2、3、4 バイトのハッシュを使用したバイナリ ツリー
の最小値 nice:007
メモリ使用量:
辞書 * 11.5 (場合 辞書 <= 32 MiB);
辞書 * 10.5 (場合 辞書 > 32 MiB)

mode =モード
圧縮 モード によって生成されたデータを分析する方法を指定します。
マッチファインダー。 サポートされています モード   速いです & 通常の。 デフォルトは 速いです for
プリセット 0-3と 通常の for プリセット 4-9。

通常 速いです ハッシュ チェーン マッチ ファインダーとともに使用され、 通常の バイナリ付き
ツリーマッチファインダー。 これもまた、 プリセット 行う。

素敵です=nice
一致に適切な長さとみなされる長さを指定します。 XNUMX回の試合で
少なくとも nice バイトが見つかると、アルゴリズムは可能性のあるものの検索を停止します。
より良いマッチング。

ニース 2 ~ 273 バイトにすることができます。 値が大きいほど圧縮率が高くなる傾向があります
速度を犠牲にした比率。 デフォルトは、 プリセット.

深さ=深さ
一致ファインダーでの最大検索深さを指定します。 デフォルトは
特別な値 0。コンプレッサーが適切な値を決定します。 深さ
から mf & nice.

リーズナブル 深さ ハッシュ チェーンの場合は 4 ~ 100、バイナリ ツリーの場合は 16 ~ 1000 です。
非常に高い値を使用すると、 深さ エンコーダが非常に遅くなる可能性があります
いくつかのファイル。 の設定は避けてください。 深さ 準備ができていない限り、1000 を超える
時間がかかりすぎる場合は、圧縮を中断します。

生のストリームをデコードするとき (--format=生)、LZMA2 には辞書のみが必要です サイズ.
LZMA1 も必要です lc, lp, pb.

--x86[=オプション]
--powerpc[=オプション]
--ia64[=オプション]
- 腕[=オプション]
--腕の親指[=オプション]
--sparc[=オプション]
ブランチ/コール/ジャンプ (BCJ) フィルターをフィルター チェーンに追加します。 これらのフィルターが使用できます
フィルター チェーンの最後ではないフィルターとしてのみ。

BCJ フィルターは、マシンコード内の相対アドレスを絶対アドレスに変換します。
対応者。 データのサイズは変わりませんが、増加します
冗長性により、LZMA2 の生成を 0 ~ 15 % 小さくすることができます。 .xz ファイル。 BCJ
フィルタは常に元に戻すことができるため、間違ったタイプのデータに対して BCJ フィルタを使用しても、
データ損失が発生しますが、圧縮率がわずかに悪化する可能性があります。

実行可能ファイル全体に BCJ フィルターを適用しても問題ありません。 それを適用する必要はありません
実行可能セクションのみ。 を含むアーカイブに BCJ フィルターを適用する
実行可能ファイルと非実行可能ファイルの両方で良い結果が得られる場合とそうでない場合があるため、
一般に、バイナリ パッケージを圧縮するときに盲目的に BCJ フィルタを適用するのは良くありません。
配布用。

これらの BCJ フィルターは非常に高速で、使用するメモリの量はわずかです。 BCJなら
フィルタはファイルの圧縮率を向上させ、解凍速度を向上させることができます。
同じ時間です。 これは、同じハードウェア上での解凍速度が異なるためです。
LZMA2 は、XNUMX 秒あたりの圧縮データのバイト数がほぼ固定されています。

これらの BCJ フィルターには、圧縮率に関連する既知の問題があります。

· 実行可能コードを含む一部のタイプのファイル (オブジェクト ファイル、静的ファイルなど)
ライブラリ、および Linux カーネル モジュール)のアドレスは命令内にあります。
フィラー値で埋められます。 これらの BCJ フィルターは引き続きアドレスを実行します。
変換すると、これらのファイルの圧縮率が悪化します。

· 複数の同様の実行可能ファイルを含むアーカイブに BCJ フィルターを適用すると、
BCJ フィルターを使用しない場合よりも圧縮率が悪くなります。 それの訳は
BCJ フィルターは実行可能ファイルの境界を検出しません。
各実行可能ファイルのアドレス変換カウンターはリセットされません。

上記の問題は両方とも、将来的には新しいフィルターで修正される予定です。 老人
BCJ フィルターは組み込みシステムでも引き続き役立ちます。
新しいフィルターは大きくなり、より多くのメモリを使用します。

命令セットが異なれば、アライメントも異なります。

フィルター調整に関する注意事項
x86 1 32 ビットまたは 64 ビット x86
PowerPC 4 ビッグエンディアンのみ
ARM 4 リトルエンディアンのみ
ARM-Thumb 2 リトルエンディアンのみ
IA-64 16 ビッグエンディアンまたはリトルエンディアン
SPARC 4 ビッグエンディアンまたはリトルエンディアン

BCJ フィルタリングされたデータは通常 LZMA2 で圧縮されるため、圧縮率は
LZMA2 オプションが、
選択されたBCJフィルター。 たとえば、IA-64 フィルターの場合は、次のように設定するとよいでしょう。 pb=4
LZMA2 (2^4=16) を使用します。 x86 フィルターは例外です。 通常はそれに固執するのが良いです
x2 実行可能ファイルを圧縮するときの LZMA86 のデフォルトの XNUMX バイト アライメント。

すべての BCJ フィルターは同じものをサポートします オプション:

開始=オフセット
開始を指定する オフセット 相対値と
絶対アドレス。 の オフセット の整列の倍数でなければなりません
フィルタ(上の表を参照)。 デフォルトはゼロです。 実際には、
デフォルトで良いです。 カスタムの指定 オフセット ほとんど役に立ちません。

- デルタ[=オプション]
デルタ フィルターをフィルター チェーンに追加します。 デルタフィルターは、フィルターとしてのみ使用できます。
フィルターチェーンの最後ではないフィルター。

現在、単純なバイト単位のデルタ計算のみがサポートされています。 役に立つかもしれない
非圧縮ビットマップ画像や非圧縮 PCM オーディオなどを圧縮する場合。
ただし、特殊な目的のアルゴリズムでは、アルゴリズムよりも大幅に優れた結果が得られる場合があります。
デルタ+LZMA2。 これは特にオーディオの場合に当てはまります。圧縮が高速で、
より良い例、 FLACとします。

サポート オプション:

距離=距離
特定します 距離 デルタ計算のバイト単位。 距離
1-256。 デフォルトは 1 です。

たとえば、 距離=2 および 1 バイト入力 A1 B2 A3 B3 A5 B4 A7 BXNUMX、
出力は A1 B1 01 02 01 02 01 02 となります。

その他 オプション
-q, - 静かな
警告と通知を抑制します。 これを XNUMX 回指定すると、エラーも抑制されます。 これ
このオプションは終了ステータスには影響しません。 つまり、警告があったとしても、
抑制された場合でも、警告を示す終了ステータスは引き続き使用されます。

-v, -詳細
冗長になります。 標準エラーが端末に接続されている場合、 xz aを表示します
進行状況インジケーター。 指定する -詳細 XNUMX 回実行すると、さらに詳細な出力が得られます。

進行状況インジケーターには次の情報が表示されます。

· 入力ファイルのサイズがわかっている場合は、完了率が表示されます。 あれは、
パーセンテージをパイプ内に表示することはできません。

· 生成 (圧縮) または消費 (解凍) される圧縮データの量。

· 消費される (圧縮) または生成される (解凍) 非圧縮データの量。

· 圧縮率。圧縮されたデータ量を除算して計算されます。
これまでに処理された非圧縮データの量によって計算されます。

· 圧縮または解凍の速度。 これは次の量として測定されます。
XNUMX 秒あたりに消費される (圧縮) または生成される (解凍) 非圧縮データ。
数秒経過後に表示されます xz の処理を開始しました
ファイルにソフトウェアを指定する必要があります。

· M:SS または H:MM:SS 形式の経過時間。

· 推定残り時間は、入力ファイルのサイズがわかっている場合にのみ表示されます。
そしてすでに数秒が経過しています xz の処理を開始しました
ファイル。 時刻はコロンを含まないあまり正確ではない形式で表示されます。
例:2分30秒。

標準エラーが端末でない場合、 -詳細 ようになります xz ファイル名を出力し、
圧縮サイズ、非圧縮サイズ、圧縮率、および場合によっては速度も
圧縮後の標準エラーまでの経過時間を XNUMX 行で表示するか、
ファイルを解凍しています。 速度と経過時間は、
操作には少なくとも数秒かかりました。 操作が完了しなかった場合、たとえば、
ユーザーの中断、サイズの場合は完了率も出力されます。
入力ファイルは既知です。

-Q, -警告なし
警告に値する状態が検出された場合でも、終了ステータスを 2 に設定しないでください。
このオプションは冗長レベルには影響しません。 - 静かな & -警告なし
警告を表示せず、終了ステータスを変更しないようにするために使用する必要があります。

- ロボット
機械が解析可能な形式でメッセージを出力します。 これは書き込みを容易にすることを目的としています
使用したいフロントエンド xz liblzma の代わりに、これは次の場合に当てはまります。
さまざまなスクリプト。 このオプションを有効にした場合の出力は、次の期間にわたって安定します。
xz リリースします。 セクションを参照してください ロボット モード 詳細については。

--情報メモリ
物理メモリ (RAM) の量を人間が判読できる形式で表示します。 xz 考えている
システムには圧縮と解凍のためのメモリ使用量制限があり、終了します
成功しました。

-h, - 助けて
最も一般的に使用されるオプションを説明するヘルプ メッセージを表示し、終了します
成功しました。

-H, --長いヘルプ
のすべての機能を説明するヘルプ メッセージを表示します。 xz、正常に終了します

-V, - バージョン
のバージョン番号を表示します xz 人間が読める形式の liblzma。 取得するため
機械で解析可能な出力、指定する - ロボット - バージョン.

ロボット モード


ロボットモードは、 - ロボット オプション。 それは次の出力を行います xz 簡単に
他のプログラムで解析します。 現在 - ロボット と一緒にのみサポートされます - バージョン,
--情報メモリ, - リスト。 通常の圧縮と解凍がサポートされます。
将来インチ


xz - ロボット - バージョン のバージョン番号を出力します xz そして次のliblzma
フォーマット:

XZ_VERSION=XYYZZZS
LIBLZMA_VERSION=XYYZZZS

X メジャーバージョン。

YYY マイナーバージョン。 偶数は安定しています。 奇数はアルファ版またはベータ版です。

ZZZ 安定版リリースのパッチ レベル、または開発リリースの単なるカウンター。

S 安定。 0 はアルファ、1 はベータ、2 は安定です。 S 次の場合は常に 2 である必要があります YYY
は均等です。

XYYZZZS 両方の行で同じである場合 xz と liblzma は同じ XZ Utils リリースのものです。

例: 4.999.9beta は 49990091 そして5.0.0は 50000002.

メモリ 制限 情報
xz - ロボット --情報メモリ タブで区切られた XNUMX つの列を含む XNUMX 行を出力します。

1. 物理メモリ (RAM) の総量 (バイト単位)

2. 圧縮時のメモリ使用量の制限 (バイト単位)。 特別な値ゼロは、
デフォルト設定。シングルスレッド モードの場合は制限なしと同じです。

3. 解凍時のメモリ使用量の制限 (バイト単位)。 特別な値ゼロは、
デフォルト設定。シングルスレッド モードの場合は制限なしと同じです。

将来的には、 xz - ロボット --情報メモリ もっと多くの列があるかもしれませんが、決してありません
一行以上。

リスト モード
xz - ロボット - リスト タブ区切りの出力を使用します。 各行の最初の列には文字列が含まれます
これは、その行にある情報の種類を示します。

これは、ファイルのリストを開始するときは常に最初の行になります。 XNUMX番目の列
行はファイル名です。

file この行には、 .xz ファイル。 このラインはいつも
の後に印刷された ライン。

流れ この線種は次の場合にのみ使用されます。 -詳細 と指定されました。 たくさんあります 流れ
中に小川があるのと同じように、ライン .xz ファイルにソフトウェアを指定する必要があります。

コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の この線種は次の場合にのみ使用されます。 -詳細 と指定されました。 たくさんあります コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の
にブロックがあるため、行 .xz ファイル。 ザ コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の 行はすべての後に表示されます
流れ 行; 異なる線種はインターリーブされません。

要約
この線種は次の場合にのみ使用されます。 -詳細 XNUMX回指定されました。 この行は
結局印刷された コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の 線。 以下のような file ライン、 要約 行に含まれる
に関する全体的な情報 .xz ファイルにソフトウェアを指定する必要があります。

合計 この行は常にリスト出力の最後の行になります。 合計を表示します
数とサイズ。

の列 file 行:
2. ファイル内のストリームの数
3. ストリーム内のブロックの総数
4. ファイルの圧縮サイズ
5. ファイルの非圧縮サイズ
6. 圧縮率など 0.123. 比率が 9.999 を超える場合、ダッシュ XNUMX つ
(---) が比率の代わりに表示されます。
7. 整合性チェック名のカンマ区切りのリスト。 以下の文字列が使用されます
既知のチェック タイプの場合: なし, CRC32, CRC64, SHA-256。 不明なチェックについて
タイプ、 知らない-N が使用されます。 N XNUMX 進数で表したチェック ID (XNUMX または
XNUMX桁)。
8. ファイル内のストリーム パディングの合計サイズ

の列 流れ 行:
2. ストリーム番号 (最初のストリームは 1)
3. ストリーム内のブロック数
4. 圧縮開始オフセット
5. 非圧縮開始オフセット
6. 圧縮サイズ (ストリーム パディングは含まれません)
7. 非圧縮サイズ
8. 圧縮率
9. 整合性チェックの名前
10. ストリームパディングのサイズ

の列 コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の 行:
2. このブロックを含むストリームの番号
3. ストリームの先頭からの相対的なブロック番号 (最初のブロックは 1)
4. ファイルの先頭からの相対的なブロック番号
5. ファイルの先頭を基準とした圧縮開始オフセット
6. ファイルの先頭を基準とした非圧縮開始オフセット
7. ブロックの合計圧縮サイズ (ヘッダーを含む)
8. 非圧縮サイズ
9. 圧縮率
10. 整合性チェックの名前

If -詳細 XNUMX 回指定された場合、追加の列が コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の ライン。
これらは単一では表示されません -詳細、この情報を取得するには
多くのシークが行われるため、遅くなる可能性があります。
11. XNUMX 進数での整合性チェックの値
12. ブロックヘッダーのサイズ
13. ブロックフラグ: c 圧縮されたサイズが存在することを示します。 u を示す
非圧縮サイズが存在します。 フラグが設定されていない場合は、ダッシュ (-) 示されています
代わりに、文字列の長さを固定に保ちます。 新しいフラグが末尾に追加される場合があります
将来の文字列。
14. ブロック内の実際の圧縮データのサイズ (ブロックは除きます)
ヘッダー、ブロック パディング、チェック フィールド)
15. このブロックを解凍するために必要なメモリ量 (バイト単位) xz
バージョン
16. フィルターチェーン。 圧縮時に使用されるオプションのほとんどは使用できないことに注意してください。
解凍に必要なオプションのみが保存されているため、既知です。
  .xz ヘッダー。

の列 要約 行:
2. このファイルを解凍するために必要なメモリ量 (バイト単位) xz
バージョン
3. はい or いいえ すべてのブロック ヘッダーが圧縮サイズと圧縮サイズの両方を持つかどうかを示します。
それらに保存される非圧縮サイズ
Since xz 5.1.2アルファ:
4。 最小 xz ファイルの解凍に必要なバージョン

の列 合計 ライン:
2. ストリーム数
3. ブロック数
4. 圧縮サイズ
5. 非圧縮サイズ
6. 平均圧縮率
7. ファイル内に存在する整合性チェック名のカンマ区切りのリスト
8. ストリームパディングサイズ
9. ファイルの数。 これは、前の列の順序を維持するためにここにあります。
オンと同じ file ライン。

If -詳細 XNUMX 回指定された場合、追加の列が 合計 ライン:
10. この方法でファイルを解凍するために必要な最大メモリ量 (バイト単位)
xz バージョン
11. はい or いいえ すべてのブロック ヘッダーが圧縮サイズと圧縮サイズの両方を持つかどうかを示します。
それらに保存される非圧縮サイズ
Since xz 5.1.2アルファ:
12。 最小 xz ファイルの解凍に必要なバージョン

将来のバージョンでは新しい線種が追加される可能性があり、新しい列を既存の線に追加できるようになります。
型は変更されますが、既存の列は変更されません。

EXIT ステータス


0 すべてが良いです。

1 エラーが発生しました。

2 警告に値する何かが発生しましたが、実際のエラーは発生していません。

標準エラーに出力される通知 (警告やエラーではない) は、終了ステータスに影響を与えません。

ENVIRONMENT


xz 環境変数からのスペースで区切られたオプションのリストを解析します。 XZ_DEFAULTS &
XZ_OPT、コマンドラインからオプションを解析する前に、この順序で実行します。 のみ注意してください
オプションは環境変数から解析されます。 オプション以外はすべて黙って無視されます。
解析は次のように行われます getopt_long(3) これはコマンドライン引数にも使用されます。

XZ_DEFAULTS
ユーザー固有またはシステム全体のデフォルト オプション。 通常、これはシェル内で設定されます
有効にする初期化スクリプト xzのデフォルトのメモリ使用量リミッター。 除く
シェル初期化スクリプトや同様の特殊な場合、スクリプトは決して設定したり、
unset XZ_DEFAULTS.

XZ_OPT これはオプションを渡すためのものです xz オプションが設定できない場合
に直接 xz コマンドライン。 これは、たとえば次のような場合に当てはまります。 xz スクリプトによって実行されます
またはツール (GNU など) tar(1):

XZ_OPT=-2v tar caf foo.tar.xz foo

スクリプトで使用できるもの XZ_OPT たとえば、スクリプト固有のデフォルトの圧縮オプションを設定します。 それ
ユーザーによるオーバーライドを許可することが依然として推奨されています XZ_OPT それが合理的であれば、例えば
in sh(1) 次のようなスクリプトを使用できます。

XZ_OPT=${XZ_OPT-"-7e"}
XZ_OPT をエクスポート

LZMA ツール 互換性の確保


コマンドライン構文は、 xz 実質的には次のスーパーセットです lzma, アンズマ, lzcat as
LZMA Utils 4.32.x から見つかりました。 ほとんどの場合、LZMA Utils を XZ に置き換えることができます。
既存のスクリプトを壊すことなく利用できます。 ただし、互換性のない点もいくつかありますが、
時々問題を引き起こす可能性があります。

圧縮 プリセット レベル
圧縮レベルのプリセットの番号付けは、次の場合と同じではありません。 xz そしてLZMAユーティリティ。 の
最も重要な違いは、辞書のサイズがさまざまなプリセットにどのようにマッピングされるかです。
辞書のサイズは、解凍プログラムのメモリ使用量とほぼ同じです。

レベル xz LZMA ユーティリティ
-0 256 KiB 該当なし
-1 1 MiB 64 KiB
-2 2 MiB 1 MiB
-3 4 MiB 512 KiB
-4 4 MiB 1 MiB
-5 8 MiB 2 MiB
-6 8 MiB 4 MiB
-7 16 MiB 8 MiB
-8 32 MiB 16 MiB
-9 64 MiB 32 MiB

辞書サイズの違いはコンプレッサーのメモリ使用量にも影響しますが、いくつかの違いがあります。
LZMA Utils と XZ Utils のその他の違いは、違いをさらに大きくします。

レベル xz LZMA ユーティリティ 4.32.x
-0 3 MiB 該当なし
-1 9 MiB 2 MiB
-2 17 MiB 12 MiB
-3 32 MiB 12 MiB
-4 48 MiB 16 MiB
-5 94 MiB 26 MiB
-6 94 MiB 45 MiB
-7 186 MiB 83 MiB
-8 370 MiB 159 MiB
-9 674 MiB 311 MiB

LZMA Utils のデフォルトのプリセット レベルは次のとおりです。 -7 XZ Utils では、 -6したがって、どちらも 8 を使用します。
デフォルトでは MiB 辞書。

ストリーミング 非ストリーミング .lzma ファイル
ファイルの非圧縮サイズは、 .lzma ヘッダ。 LZMA Utils はそれを実現します
通常のファイルを圧縮するとき。 別の方法は、非圧縮サイズであることをマークすることです。
不明であり、ペイロード終了マーカーを使用してデコンプレッサーが停止する場所を示します。
LZMA Utils は、非圧縮サイズが不明な場合にこの方法を使用します。これは次の場合に当てはまります。
パイプの例。

xz 解凍をサポートします .lzma ペイロード終了マーカーの有無にかかわらず、すべてのファイル .lzma
によって作成されたファイル xz ペイロード終了マーカーを使用し、非圧縮サイズが次のようにマークされます。
では不明 .lzma ヘッダ。 これは、まれな状況では問題になる可能性があります。 ために
例、 .lzma 組み込みデバイスの解凍プログラムは、次のようなファイルでのみ機能する可能性があります。
既知の非圧縮サイズ。 この問題が発生した場合は、LZMA Utils または LZMA SDK を使用する必要があります。
作成する .lzma 既知の非圧縮サイズのファイル。

非対応 .lzma ファイル
  .lzma フォーマットで許可される lc 最大 8 の値、および lp 値は最大 4 です。LZMA ユーティリティは次のことができます。
任意の方法でファイルを解凍します lc & lp、ただし常に次のファイルを作成します lc=3 & lp=0.
他のファイルを使用してファイルを作成する lc & lp で可能です xz そしてLZMA SDKを使用します。

liblzma での LZMA1 フィルターの実装には、次の合計が必要です。 lc & lp しなければなりません
4 を超えてはなりません。したがって、 .lzma この制限を超えるファイルは解凍できません
  xz.

LZMA Utils は作成のみを行います .lzma 辞書サイズが 2^ のファイルn (2の累乗)しかし
任意の辞書サイズのファイルを受け入れます。 liblzma のみを受け入れます .lzma を持つファイル
辞書サイズ 2^n または 2^n + 2^(n-1)。 これは、次の場合に誤検知を減らすためです。
検出 .lzma ファイル。

これらの制限は実際には問題にはなりません。 .lzma ファイル
liblzma が受け入れる設定で圧縮されています。

引きずる ごみ
解凍するとき、LZMA Utils は最初の圧縮ファイル以降のすべてを黙って無視します。 .lzma ストリーム。
ほとんどの場合、これはバグです。 これは、LZMA Utils がサポートしていないことも意味します。
連結されたものを解凍する .lzma ファイル。

初回以降にデータが残っている場合 .lzma ストリーム、 xz ファイルが破損しているとみなします
ない限り、 --単一ストリーム 使われた。 これにより、次のことを前提としたあいまいなスクリプトが壊れる可能性があります。
後続のゴミは無視されます。

注意事項


圧縮された 出力 かもしれません 変わります
同じ非圧縮入力ファイルから生成される正確な圧縮出力は異なる場合があります。
圧縮オプションが同じであっても、XZ Utils のバージョン間で。 これは、
ファイル形式に影響を与えることなく、エンコーダを改善することができます(より高速またはより適切な圧縮)。
出力は、同じ XZ Utils バージョンの異なるビルド間でも異なる可能性があります。
さまざまなビルド オプションが使用されます。

上記は、実装することを意味します --rsyncable rsyncableを作成するには .xz ファイルが進まない
エンコーダ実装の一部をフリーズすることなく実行され、その後使用できるようになります。
  --rsyncable.

組み込み .xz デコンプレッサー
組み込み .xz XZ Embedded のような圧縮解除プログラムの実装は、必ずしもファイルをサポートしているわけではありません
誠実に作成された チェック 以外のタイプ なし & crc32。 デフォルトは
--check=crc64、使用する必要があります --check=なし or --check=crc32 埋め込み用のファイルを作成するとき
システム。

外部の組み込みシステムのすべて .xz フォーマット解凍プログラムはすべてをサポートします。 チェック タイプ、または
少なくとも、次の場合には整合性チェックを検証せずにファイルを解凍できます。
特定の チェック サポートされていません。

XZ Embedded は BCJ フィルターをサポートしますが、デフォルトの開始オフセットのみをサポートします。


の基礎
ファイルを圧縮します foofoo.xz デフォルトの圧縮レベルを使用します (-6)、削除します foo
圧縮が成功した場合:

xz フー

圧縮解除する bar.xzバー そして削除しないでください bar.xz たとえ解凍が成功したとしても:

xz -dk bar.xz

創造する baz.tar.xz プリセットで -4e (-4 - 過激)、これは例えば
デフォルト -6ただし、圧縮と解凍に必要なメモリは少なくなります (48 MiB と 5 MiB、
それぞれ):

タール CF - バズ | xz -4e > baz.tar.xz

圧縮ファイルと非圧縮ファイルが混在していても、次のコマンドを使用して標準出力に解凍できます。
単一のコマンド:

xz -dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt

並列シミュレーションの設定 of 多くの ファイル
GNU と *BSD では、 find(1)と xargs(1) 多くの圧縮を並列化するために使用できます。
ファイル:

探す 。 -タイプ f \! -name '*.xz' -print0 \
| | xargs -0r -P4 -n16 xz -T1

  -P オプション xargs(1) 並列数を設定します xz プロセス。 最高の価値
  -n オプションは、圧縮するファイルの数によって異なります。 あるだけなら
いくつかのファイルの場合、値はおそらく 1 になるはずです。 数万のファイル、100 または
数を減らすにはさらに増やすことが適切かもしれません xz それを処理する xargs(1)
最終的には作成します。

オプション -T1、XNUMX for xz 強制的にシングルスレッドモードにするためのものです。 xargs(1)は
並列化の量を制御するために使用されます。

ロボット モード
複数のファイルを圧縮した後に合計何バイトが節約されたかを計算します。

xz --robot --list *.xz | awk '/^totals/{print $5-$4}'

スクリプトは、十分な新しいものを使用していることを知りたい場合があります。 xz。 以下 sh(1)スクリプト
のバージョン番号を確認します。 xz ツールは少なくとも 5.0.0 です。 この方法は
をサポートしていない古いベータ版と互換性があります。 - ロボット オプション:

もしも ! eval "$(xz --robot --version 2> /dev/null)" ||
[ "$XZ_VERSION" -lt 50000002 ]; それから
echo 「あなたの xz は古すぎます。」
fi
XZ_VERSION LIBLZMA_VERSION の設定を解除します

次を使用して解凍時のメモリ使用量制限を設定します。 XZ_OPTただし、すでに制限が設定されている場合は、
設定します。増加しないでください。

NEWLIM=$((123 << 20)) # 123 MiB
OLDLIM=$(xz --robot --info-memory |cut -f3)
if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; それから
XZ_OPT="$XZ_OPT --memlimit-decompress=$NEWLIM"
XZ_OPT をエクスポート
fi

カスタム コンプレッサー filter チェーン
カスタム フィルター チェーンの最も簡単な使用法は、LZMA2 プリセットをカスタマイズすることです。 これは可能です
プリセットは、潜在的に有用な組み合わせのサブセットのみをカバーしているため、便利です。
圧縮設定。

オプションの説明にある表の CompCPU 列 -0 ... -9 &
- 過激 LZMA2 プリセットをカスタマイズするときに便利です。 関連する部分は次のとおりです
これら XNUMX つのテーブルから収集されたものは次のとおりです。

プリセット CompCPU
-0 0
-1 1
-2 2
-3 3
-4 4
-5 5
-6 6
-5e 7
-6e 8

ファイルを適切に圧縮するには、ある程度大きな辞書 (例: 32 MiB) が必要であることがわかっている場合、
しかし、それよりも早く圧縮したい場合は、 xz -8 CompCPU 値が低いプリセットを使用するとよいでしょう
(例 1) は、より大きな辞書を使用するように変更できます。

xz --lzma2=preset=1,dict=32MiB foo.tar

特定のファイルでは、上記のコマンドの方が速い場合があります。 xz -6 圧縮しながら
大幅に良くなりました。 ただし、一部のファイルのみがこの利点を享受できることを強調しなければなりません。
CompCPU の値を低く抑えながら大きな辞書を作成します。 最も明白な状況は、
大きな辞書は非常に役立ちます。少なくとも XNUMX つの非常に類似したファイルを含むアーカイブです。
それぞれ数メガバイト。 辞書のサイズはどの辞書よりもかなり大きくなければなりません
個々のファイルを使用して、LZMA2 がファイル間の類似点を最大限に活用できるようにします。
連続したファイル。

コンプレッサーとデコンプレッサーのメモリ使用量が非常に多くても問題がなく、ファイルが
圧縮されたファイルは少なくとも数百メガバイトであるため、さらに大きなサイズを使用すると便利な場合があります。
辞書は 64 MiB よりも xz -9 使用するだろう:

xz -vv --lzma2=dict=192MiB big_foo.tar

使い方 -vv (-詳細 -詳細) 上記の例のように、メモリを確認するのに役立ちます。
コンプレッサーとデコンプレッサーの要件。 より大きな辞書を使用することを忘れないでください
非圧縮ファイルのサイズよりもメモリの無駄であるため、上記のコマンドは使用できません
小さなファイルに便利です。

場合によっては、圧縮時間は重要ではありませんが、解凍プログラムのメモリ使用量を考慮する必要があります。
たとえば、組み込みシステムでファイルを解凍できるようにするために、低く保たれます。 の
次のコマンドは使用します -6e (-6 - 過激) をベースとして辞書をのみに設定します。
64 KiB。 結果のファイルは XZ Embedded で解凍できます (そのため、
--check=crc32) 約 100 KiB のメモリを使用します。

xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo

できるだけ多くのバイトを絞り出したい場合は、リテラルの数を調整します。
コンテキスト ビット (lc) と位置ビット数 (pb)が役立つ場合があります。 調整する
リテラル位置ビット数 (lp)も役立つかもしれませんが、通常は lc & pb もっと
重要。 たとえば、ソース コード アーカイブにはほとんど US-ASCII テキストが含まれているため、次のようなものになります。
以下の場合は、ファイルが若干 (0.1 % など) 小さくなる可能性があります。 xz -6e (なしでも試してみてください
lc=4):

xz --lzma2=preset=6e,pb=0,lc=4 ソースコード.tar

別のフィルターを LZMA2 と一緒に使用すると、特定のファイル タイプの圧縮を向上させることができます。
たとえば、x86 BCJ フィルターを使用して x32-86 または x64-86 共有ライブラリを圧縮するには、次のようにします。

xz --x86 --lzma2 libfoo.so

フィルター オプションの順序は重要であることに注意してください。 もしも --x86 の後に指定されます
--lzma2, xz LZMA2 の後にフィルタは存在できないため、エラーが発生します。また、
これは、x86 BCJ フィルターをチェーンの最後のフィルターとして使用できないためです。

デルタ フィルターと LZMA2 を併用すると、ビットマップ イメージで良好な結果が得られます。 そうすべき
通常は、単純なデルタよりも高度なフィルターがいくつかあるものの、Deflate を使用する PNG に勝ります。
実際の圧縮については。

画像は非圧縮形式 (非圧縮 TIFF など) で保存する必要があります。 距離
デルタ フィルターのパラメーターは、画像内のピクセルあたりのバイト数と一致するように設定されます。
例: 24 ビット RGB ビットマップが必要 距離=3、パスするのも良いです。 pb=0 LZMA2へ
XNUMX バイトのアライメントに対応します。

xz --delta=dist=3 --lzma2=pb=0 foo.tiff

複数の画像が XNUMX つのアーカイブに保存されている場合 (例: 。タール)、デルタフィルターは次のようになります。
すべての画像のピクセルあたりのバイト数が同じである限り、これにも取り組んでください。

onworks.net サービスを使用して xzcat をオンラインで使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad