-m (圧縮方式の設定)スイッチ

圧縮方式を設定します。

文法

-m<method_parameters>

このスイッチの書式は、書庫形式に依存します。

Zip

パラメータ デフォルト 説明
x=[0 | 1 | 3 | 5 | 7 | 9 ] 5 圧縮レベルの設定
m={MethodID} Deflate 圧縮方式の設定 : Copy, Deflate, Deflate64, BZip2.
fb={NumFastBytes} 32 Deflate エンコーダに渡す Fast Bytes の値を設定
pass={NumPasses} 1 Deflate エンコーダに渡す Passes の値を設定
d={Size}[b|k|m] 900000 BZip2圧縮の際の辞書サイズの設定
mt=[off | on | {N}] on マルチスレッドモードの設定
em={EncryptionMethodID} ZipCrypto 暗号化方式の設定: ZipCrypto, AES128, AES192, AES256
x=[0 | 1 | 3 | 5 | 7 | 9 ]

圧縮レベルの設定。 x=0 コピーモードを意味します (要するに無圧縮).

Deflate / Deflate64 の設定:

圧縮レベル Fast Bytes の値 Passes の値 説明
1 32 1 最速圧縮
3 高速圧縮
5 標準圧縮
7 64 3 最高圧縮
9 128 10 超圧縮

Deflate 方式での x=1 と x=3 は 圧縮の高速モードを示します。

BZip2 の設定:

圧縮レベル 辞書サイズ Passes の値 説明
1 100000 1 最速圧縮
3 500000 高速圧縮
5 900000 標準圧縮
7 2 最高圧縮
9 7 超圧縮
fb={NumFastBytes}

Deflate/Deflate64 エンコーダに渡す Fast Bytes の値を設定します。 この値は 3 から 258 まで取れます。 通常大きな数字を設定すると圧縮率は若干良くなり, 圧縮速度は遅くなります。 同一のデータが連続しているファイルを圧縮する際, Fast Bytes に大きな数値を設定すると圧縮率が著しく良くなります。

pass={NumPasses}

Deflate エンコーダに渡す Passes の値を設定します。この値は Deflate では 1 から 15 まで、 BZip2 では 1 から 10 まで取れます。通常大きな数字を設定すると圧縮率は若干良くなり, 圧縮速度は遅くなります。

d={Size}[b|k|m]

BZip2 圧縮の際の辞書サイズを設定します。 サイズが bytes なのか kilobytes なのか megabytes を指定しなければいけません. 辞書サイズの最大値は 900000b です。 [b|k|m] のうちのいずれも指定しなければ、 辞書サイズは『DictionarySize = 2^Size bytes』の計算結果となります。

mt=[off | on | {N}]

マルチスレッドモードを設定。もしマルチプロセッサのシステムかマルチコアのシステム を使用しているのなら、このスイッチを指定することでスピードアップが見込めます。 このスイッチは BZip2, Deflate, Deflate64 での圧縮と BZip2 での解凍へのみ影響します。 マルチスレッドモードでは、各スレッドがバッファリングのために 32 MB の RAM を使用します。 {N} を選択した場合、7-Zip は N スレッド使用しようと試みます。

GZip

GZip は Zip と同じパラメータを使用します。ただし、サポートする圧縮方式はDeflateのみです。

BZip2

パラメータ デフォルト 説明
x=[1 | 3 | 5 | 7 | 9 ] 5 圧縮レベルの設定
pass={NumPasses} 1 Bzip2 エンコーダに渡す Passes の値を設定
mt=[off | on | {N}] on マルチスレッドモードを設定。
x=[1 | 3 | 5 | 7 | 9 ]

圧縮レベルの設定。

圧縮レベル Passes の値 説明
5 1 デフォルトの圧縮方式
7 2 最高圧縮方式
9 7 超圧縮方式
pass={NumPasses}

Passes の値を設定します。この値は 1 から 10 まで取れます。 通常圧縮では 1 、最高圧縮では 2 、超圧縮では 7 の値を取っています。 より大きな数字を設定できれば圧縮率は若干良くなり、圧縮速度は遅くなります。

mt=[off | on | {N}]

マルチスレッドモードを設定。もしマルチプロセッサのシステムかマルチコアのシステム を使用しているのなら、このスイッチを指定することでスピードアップが見込めます。 {N} を選択した場合、例えば mt=4 とするなら、7-Zip は 4 スレッド使用しようと試みます。

7z

パラメータ デフォルト 説明
x=[0 | 1 | 3 | 5 | 7 | 9 ] 5圧縮レベルの設定
s=[off | on | [e] [{N}f] [{N}b | {N}k | {N}m | {N}g] on ソリッド圧縮の設定
f=[off | on] on 実行ファイルを圧縮するためのフィルタの設定
hc=[off | on] on 書庫のヘッダ圧縮の設定
he=[off | on] off 書庫のヘッダ暗号化の設定
b{C1}[s{S1}]:{C2}[s{S2}] コーダーの組み合わせの設定
{N}={MethodID}[:param1][:param2][..] LZMA 圧縮メソッドの選択 : LZMA, PPMd, BZip2, Deflate, BCJ, BCJ2, Copy.
mt=[off | on | {N}] on マルチスレッディングモードの設定
x=[0 | 1 | 5 | 7 | 9 ]

圧縮レベルの設定

圧縮レベル 圧縮メソッド 辞書サイズ FastBytes MatchFinder フィルタ 説明
0 Copy 無圧縮
1 LZMA 64 KB 32 HC4 BCJ 最速圧縮
3 LZMA 1 MB 32 HC4 BCJ 速度重視
5 LZMA 16 MB 32 BT4 BCJ 標準圧縮
7 LZMA 32 MB 64 BT4 BCJ 最高圧縮
9 LZMA 64 MB 64 BT4 BCJ2超圧縮
s=[off | on | [e] [{N}f] [{N}b | {N}k | {N}m | {N}g)]

ソリッド圧縮の有無を設定します。デフォルトでは s=on となっています。 ソリッド圧縮では全てのファイルを一続きのデータとして圧縮します。 通常ソリッド圧縮では圧縮率が向上します。

e 拡張子ごとに異なるブロックに分けてソリッド圧縮
{N}f 一つのブロックに含まれる最大のファイル数の設定
{N}b | {N}k | {N}m | {N}g 一つのブロックの最大のデータサイズの設定

デフォルトではソリッドブロックのサイズの限界は次の様に設定されています :

圧縮レベル ソリッドブロックサイズ
無圧縮 0 B
最高速 16 MB
高速 128 MB
標準 2 GB
最高 4 GB
超圧縮 4 GB

通常ブロックのサイズの限界を設定すると圧縮率が下がりますが,次の様な利点があります :

現在の 7-Zip はソリッド書庫の更新作業をサポートしていませんが, ソリッドブロックごとの更新ならば可能。

使用例 :

        s=100f10m
      

一つのソリッドブロックあたりファイル数 100 個までとサイズ 10 MB までの限界を持つソリッド圧縮を設定。

f=[off | on]

実行ファイルを圧縮するためのフィルタの設定 : dll,exe,ocx,sfx,sys といった実行ファイルを圧縮する際,最高圧縮時には BCJ2 フィルタを, その他の圧縮時には BCJ フィルタが使われます。 デフォルトでは f=on となっています。

hc=[off | on]

書庫のヘッダ圧縮の設定をします。デフォルトでは hc=on となっています。 書庫ヘッダ圧縮の使用時には,書庫ヘッダの一部が LZMA で圧縮されます。

he=[off | on]

書庫のヘッダ暗号化の設定をします。デフォルトでは he=off となっています。

{N}

圧縮方式の順序を設定します。これは圧縮方式に数字を関連づけるのにも使用されます。 数字は0から始まらなければならず,小さい番号の方の圧縮方式から使われます。

b{C1}[s{S1}]:{C2}[s{S2}]

コーダー C1 の出力ストリーム S1 をコーダー C2 の入力ストリーム S2 とします。 ストリームナンバーが指定されない場合はナンバー 0 が使用されます。

通常コーダーは入力ストリームと出力ストリームを一つずつ持ちます。 7z 形式では、複数の入力ストリームと出力ストリームを持つコーダーもあります。

例えば BCJ2 エンコーダーは入力ストリームを 一つ,出力ストリームを四つ持ちます。

mt=[off | on | {N}]

マルチスレッドモードを設定。もしマルチプロセッサのシステムかマルチコアのシステム を使用しているのなら、このスイッチを指定することでスピードアップが見込めます。 7-Zip はマルチスレッドモードを LZMA での圧縮と BZip2 での圧縮/解凍でのみサポートします。{N} を選択した場合、例えば mt=4 とするなら、 7-Zip は 4 スレッド使用しようと試みます。LZMA 圧縮では 2 スレッドのみ使用します。

{N}={MethodID}[:param1][:param2] ... [:paramN]

圧縮方式を設定します。圧縮方式はいくつでも使用できます。 デフォルトの圧縮方式は LZMA 形式です。

使用できるパラメータは以下に示すものです:

対応圧縮方式 :

MethodID 説明
LZMA LZ アルゴリズムに基づくアルゴリズム。
PPMd Dmitry Shkarin の PPMdH 方式に若干の変更を加えた形式。
BZip2 BWT アルゴリズム。
Deflate LZ 法 + Huffman 法。
Copy 無圧縮。

対応フィルタ形式:

MethodID 説明
BCJ x86 実行ファイル用フィルタ
BCJ2 x86実行ファイル用フィルタ(version 2)
BC_ARM ARM (little endian)実行ファイル用フィルタ
BC_ARMThumb ARM Thumb (little endian)実行ファイル用フィルタ
BC_IA64 IA-64 実行ファイル用フィルタ
BC_PPC_B PowerPC (big endian) 実行ファイル用フィルタ
BC_SPARC SPARC 実行ファイル用フィルタ

ファイルによってはフィルタを使用することにより圧縮率を高めることができます。 フィルタは圧縮方式と同時に使用する必要があります。(例えばBCJ+LZMAというように)

LZMA

LZMA は Lempel-Ziv アルゴリズムに基づいたアルゴリズムです。 このアルゴリズムは高速解凍 (圧縮に比べて約 10-20% 速い) が可能です。 圧縮と解凍に要求されるメモリーの量が違います。 (詳細は {N}d={Size}[b|k|m] スイッチを参照して下さい)

パラメータ デフォルト 説明
a=[0|1] 1 圧縮モードの設定
d={Size}[b|k|m] 24 辞書サイズの設定
mf={MF_ID} bt4 Match Finder の設定
fb={N} 32 Fast Bytes の設定
mc={N} 32Match Finder のサイクル値の設定
lc={N} 3 Literal Context bits の設定 - [0, 8]
lp={N} 0 Literal Pos bits の設定 - [0, 4]
pb={N} 2 Pos Bits の設定 - [0, 4]
a=[0|1]

圧縮モードの設定 : 0 = 高速,1 = 通常。 デフォルトでは 1 となっています。

{N}d={Size}[b|k|m]

LZMA の使用する辞書サイズを設定します。バイト,キロバイト,メガバイトの中から 選択する必要があります。辞書サイズの最大値は 1 GB = 2^30 バイトです。 LZMA のデフォルトは,標準圧縮時に 24 (16 MB),最高圧縮 (-mx=7) 時に 25 (32 MB), 超圧縮 (-mx=9) 時に 26 (64 MB) です。 [b|k|m] の中から選択しなかった場合,辞書サイズは 2^Size バイトで計算されます。 LZMA 方式で辞書サイズ N で圧縮されたファイルを解凍するには、おおよそ N バイトのメモリ (RAM) が必要です。

mf={MF_ID}

LZMAのMatch Finderの値を設定します。デフォルトは bt4 です。 hc* グループのアルゴリズムは圧縮率があまり良くありませんが, ファストモード (a=0) と組み合わせることで非常に高速な圧縮ができます。 必要なメモリ量は辞書サイズ (表の中のパラメータ "d") に依存します。

MF_ID メモリ 説明
bt2 d*9.5 + 1MB 2 バイトに分割された Binary Tree
bt3 d*11.5 + 4 MB 3 バイトで分割された Binary Tree
bt4 d*11.5 + 4 MB 4 バイトで分割された Binary Tree
hc4 d*7.5 + 4 MB 4 バイトで分割された Hash Chain

注釈 : OS はシステムのためにある程度の物理メモリを必要とします。 そのため最低 32MB の物理メモリは確保しておいて下さい。

fb={N}

LZMA エンコーダに渡す Fast Bytes の値を設定します。 サイズは 5 から 273 の間で設定できます。 デフォルトでは通常圧縮で 32,最高圧縮と超圧縮で 64 に設定されています。 通常,サイズを大きくすると圧縮率はわずかに良くなり処理は遅くなります。

mc={N}

Match Finderのサイクル(passes)の値を設定します。 この値は 0 から 1000000000 まで取れます。 デフォルトの値は、BT* Match Finderの場合 (16 + number_of_fast_bytes / 2) 、 HC4 Match Finderの場合 (8 + number_of_fast_bytes / 4) となります。 mc=0 を指定したなら、 LZMA はデフォルトの値を使用します。 通常大きな数字を設定すると圧縮率は若干良くなり, 圧縮速度は遅くなります。 例えば、 mf=HC4 と mc=10000 の指定は、 mf=BT4 の指定時とほぼ同じ圧縮率となります。

lc={N}

Literal Context bits の設定。これは 0 から 8 までの値を取ります。 デフォルトの値は 3 です。大きなファイルを圧縮する際、 lc=4 が良い事もあります。

lp={N}

Literal Pos bits の設定。これは 0 から 4 までの値を取ります。 デフォルトの値は 0 です。lp スイッチは周期が 2^value (lp=value) と等しい周期の 周期的なデータを意味するためのものです。 例えば,32-bit (4 bytes) 周期のデータを圧縮する際には lp=2 とします。 lp スイッチを変更する場合,lc=0 とした方が良い事もよくあります。

pb={N}

Pos bits の設定。これは 0 から 4 までの値を取ります。 デフォルトの値は 2 です。pb スイッチは周期が 2^value (lp=value) と等しい周期の 周期的なデータを意味するためのものです。

PPMd

PPMd は PPM に基づいたアルゴリズムです。 このアルゴリズムはほとんど Dmitry Shkarin の PPMdH ソースを元にしています。 PPMd は単純なテキストファイルにおいて,非常に高い圧縮率を誇ります。 圧縮速度と解凍速度は同じです。必要とされるメモリも、圧縮と解凍で同じです。

パラメータ デフォルト 説明
{N}mem={Size}[b|k|m] 24 PPMD に使用するメモリのサイズを設定します。
{N}o={Size} 6 PPMD のモデルサイズを設定します。
{N}mem={Size}[b|k|m]

PPMD に使用するメモリのサイズを設定します。 バイト,キロバイト,メガバイトの中から選択する必要があります。 最大値は 2GB = 2^31 バイトです。デフォルトでは 24 (16MB) です。 [b|k|m] の中から選択しなかった場合,メモリのサイズは 2^Size バイトで計算されます。 PPMD が必要とするメモリのサイズは、圧縮と解凍で同じです。

{N}o={Size}

PPMD のモデルサイズを設定します。サイズは 2 から 32 の間で指定でき、デフォルトでは 6 です。

BCJ2

BCJ2 は32-bit x86 実行ファイルの分岐変換の version 2 です。 これは分岐命令をより圧縮できるように変換します。

BCJ2 エンコーダーは入力ストリームを一つ,出力ストリームを四つ持ちます:

LZMAが使われている場合,s1 と s2 ストリームのための辞書サイズ(ほとんどの場合 512KB で十分)は s0 ストリームの辞書サイズよりも小さくできるでしょう。

使用例

7z a -tzip archive.zip *.jpg -mx0

書庫ファイル archive.zip にファイル *.jpg を圧縮せずに追加します。

7z a -t7z archive.7z *.exe *.dll -m0=BCJ -m1=LZMA:d=21 -ms -mmt

ソリッド書庫ファイル archive.7z に ファイル *.exe とファイル *.dll を, BCJ 変換と,辞書サイズ 2MB の LZMA 圧縮方式とで追加します。 圧縮はマルチスレッディングモードで行われます。

7z a -t7z archive.7z *.exe *.dll -m0=BCJ2 -m1=LZMA:d23 -m2=LZMA:d19 -m3=LZMA:d19 
     -mb0:1 -mb0s1:2 -mb0s2:3

書庫ファイル archive.7z にファイル *.exe とファイル *.dll を BCJ2 で変換後,LZMA で圧縮して (ただしメイン出力ストリーム (s0) は辞書サイズ 8MB,s1 と s2 出力ストリームには 512KB で LZMA 圧縮) 追加します。

7z a -t7z archive.7z *.txt -m0=PPMd

書庫ファイル archive.7z にファイル *.txt を PPMd 方式で追加します。

このスイッチと共に使用することができるコマンド

a (追加), d (削除), u (更新),

参照

スイッチ: -t (書庫の形式を指定),