LZ4ライブラリのコマンドラインインターフェース
ビルド
lz4のコマンドラインインターフェース(CLI)は、追加のパラメーターを指定せず、makeコマンドで生成します。
CLIは、LZ4で圧縮したフレームを生成・展開します。
ビルド処理をさらに制御できるよう、Makefileスクリプトは標準の規約すべてに対応します。標準のターゲット(all、install、cleanなど)や変数(CC、CFLAGS、CPPFLAGSなど)も含みます。
Makefileは、用途に応じた複数のターゲットを提供します。
lz4: gzipに似たコマンドライン構文を使う、既定のCLI。lz4c: 旧来のlz4コマンドに対応します(gzipとは互換性がありません)。lz4c32:lz4cと同じですが、32ビットの実行ファイルを生成します。unlz4、lz4cat:lz4へのシンボリックリンクで、既定では展開と、圧縮ファイルのcatを行います。man: Markdownソースのlz4.1.mdからmanページを生成します。
Makefileのビルド変数
HAVE_MULTITHREAD: マルチスレッド対応でビルドします。通常は自動検出ですが、必要に応じて0または1へ強制できます。例えば、LinuxからWindows向けにクロスコンパイルする際に役立ちます。HAVE_PTHREAD:<pthread>対応の有無を決めます。自動検出ですが、必要に応じて0または1へ強制できます。makeは、この結果を使い、マルチスレッド対応を自動的に有効にします。
Cプリプロセッサーのビルド変数
これらは、コンパイル時にプリプロセッサーが読む変数です。開始時の既定値など、実行ファイルの動作に影響し、programs/lz4conf.hで公開しています。どのビルドシステムからでも操作できます。代入方法は環境によって異なります。
通常のposix + gcc + make環境では、CPPFLAGS=-DVARIABLE=valueの代入で定義できます。
LZ4_CLEVEL_DEFAULT: 指定がない場合の既定の圧縮レベル。既定値は1です。LZ4IO_MULTITHREAD: マルチスレッド対応を有効にします。既定では無効です。LZ4_NBWORKERS_DEFAULT: マルチスレッドモードで使うワーカースレッド数の既定値(-T#コマンドで上書きできます)。既定値は0で、ローカルCPUに基づく「自動決定」を意味します。LZ4_NBWORKERS_MAX: 実行時に要求できるワーカー数の絶対的な最大値。現在、既定値は200です。主に、百万スレッドなど、不合理で、おそらく誤った要求からシステムを保護するためです。LZ4_BLOCKSIZEID_DEFAULT:lz4のブロックサイズコードの既定値。有効な値は[4-7]で、64 KB、256 KB、1 MB、4 MBに対応します。執筆時点の既定値は7で、4 MBのブロックサイズです。
環境変数
環境変数を通じて、lz4へ一部のパラメーターを渡せます。例えばスクリプト内から呼ぶなど、lz4の呼び出しは分かっていても、圧縮セッションに影響するパラメーターをlz4へ渡す手段がない場合に役立ちます。
環境変数は、実行ファイルの既定値より優先しますが、対応する実行時コマンドより優先順位は低くなります。グローバルな環境変数として設定すれば、実行ファイルの設定と異なる個人用の既定値を適用できます。
LZ4_CLEVELは、コマンドラインで他の圧縮レベルを指定していない場合に、lz4が使う既定の圧縮レベルを指定できます。実行ファイルの既定値は、通常1です。
LZ4_NBWORKERSは、lz4が圧縮で使うスレッド数の既定値を指定できます。実行ファイルの既定値は、通常0で、ローカルCPUに基づく自動決定を意味します。この機能が関係するのは、lz4をマルチスレッド対応でコンパイルした場合だけです。ワーカー数の上限はLZ4_NBWORKERS_MAXです(既定では200)。
パラメーターの連結
lz4 CLIは、短いコマンドの連結に対応します。例えば、-d、-q、-fは-dqfへまとめられます。
--long-commandsでは連結できず、必ず別々にしなければなりません。
コマンドラインインターフェースのベンチマーク
lz4 CLIは、メモリ内の圧縮ベンチマークモジュールを備え、-b#コマンドで開始します。#は圧縮レベルです。
ベンチマークは、渡したファイル名の一覧を対象に行います。I/Oの負荷をなくすため、ファイル全体をメモリへ読み込みます。
複数のファイルを渡すと、同じベンチマークセッションへまとめます(ただし、各ファイルの圧縮・展開は別々です)。-Sコマンドを使うと、ファイルごとに一セッションへ分けます。
ファイルを渡していない場合は、代わりに内部のLorem Ipsum生成器を使います。
ベンチマークは、圧縮率、圧縮サイズ、圧縮速度、展開速度を測定します。-bから-eまで、昇順に複数の圧縮レベルを選べます。-iパラメーターは、各セッションに使う秒数を指定します。
コマンドラインインターフェースの使い方
コマンドの完全な一覧は、-hまたは-Hパラメーターで取得できます。
Usage :
lz4 [arg] [input] [output]
input : a filename
with no FILE, or when FILE is - or stdin, read standard input
Arguments :
-1 : Fast compression (default)
-9 : High compression
-d : decompression (default for .lz4 extension)
-z : force compression
-D FILE: use FILE as dictionary
-f : overwrite output without prompting
-k : preserve source files(s) (default)
--rm : remove source file(s) after successful de/compression
-h/-H : display help/long help and exit
Advanced arguments :
-V : display Version number and exit
-v : verbose mode
-q : suppress warnings; specify twice to suppress errors too
-c : force write to standard output, even if it is the console
-t : test compressed file integrity
-m : multiple input files (implies automatic output filenames)
-r : operate recursively on directories (sets also -m)
-l : compress using Legacy format (Linux kernel compression)
-B# : cut file into blocks of size # bytes [32+]
or predefined block size [4-7] (default: 7)
-BD : Block dependency (improve compression ratio)
-BX : enable block checksum (default:disabled)
--no-frame-crc : disable stream checksum (default:enabled)
--content-size : compressed frame includes original size (default:not present)
--[no-]sparse : sparse mode (default:enabled on file, disabled on stdout)
--favor-decSpeed: compressed files decompress faster, but are less compressed
--fast[=#]: switch to ultra fast compression level (default: 1)
Benchmark arguments :
-b# : benchmark file(s), using # compression level (default : 1)
-e# : test all compression levels from -bX to # (default : 1)
-i# : minimum evaluation time in seconds (default : 3s)```
ライセンス
このディレクトリの全ファイルは、GPL-v2の条件でライセンスされています。 詳細はCOPYINGを参照してください。 ライセンス本文は、各ソースファイルの先頭にも含まれています。