圧縮方式を設定します。
-m<method_parameters>
このスイッチの書式は、書庫形式に依存します。
パラメータ | デフォルト | 説明 |
---|---|---|
x=[0 | 1 | 3 | 5 | 7 | 9 ] | 5 | 圧縮レベルの設定 |
m={MethodID} | Deflate | 圧縮方式の設定 : Copy, Deflate, Deflate64, BZip2, LZMA, PPMd. |
fb={NumFastBytes} | 32 | Deflate エンコーダに渡す Fast Bytes の値を設定 |
pass={NumPasses} | 1 | Deflate エンコーダに渡す Passes の値を設定 |
d={Size}[b|k|m] | 900000 | BZip2 圧縮の際の辞書サイズの設定 |
mem={Size}[b|k|m] | 24 | PPMd 圧縮時の使用メモリサイズの設定 |
o={Size} | 8 | PPMd 圧縮時のモデルオーダーの設定。 |
mt=[off | on | {N}] | on | マルチスレッドモードの設定 |
em={EncryptionMethodID} | ZipCrypto | 暗号化方式の設定: ZipCrypto, AES128, AES192, AES256 |
tc=[off | on] | on | ファイルの NTFS タイムスタンプの保管: 修正日時、作成日時、アクセス日時。 |
cl=[off | on] | off | 7-Zip はファイル名のためにローカルのコードページを常に使用します。 |
cu=[off | on] | off | 7-Zip は ASCII ではないシンボルがファイル名に含まれる際、ファイル名に UTF-8 を使用します。 |
デフォルト(cl と cu スイッチのどちらも指定していない場合)では、 7-Zip は ローカルのコードページがサポートしていないシンボルがファイル名に含まれる際、ファイル名に UTF-8 エンコーディングのみを使用します。
圧縮レベルの設定。 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 | 超圧縮 |
Deflate/Deflate64 エンコーダに渡す Fast Bytes の値を設定します。 この値は 3 から 258 まで取れます。 通常大きな数字を設定すると圧縮率は若干良くなり, 圧縮速度は遅くなります。 同一のデータが連続しているファイルを圧縮する際, Fast Bytes に大きな数値を設定すると圧縮率が著しく良くなります。
Deflate エンコーダに渡す Passes の値を設定します。この値は Deflate では 1 から 15 まで、 BZip2 では 1 から 10 まで取れます。通常大きな数字を設定すると圧縮率は若干良くなり, 圧縮速度は遅くなります。
BZip2 圧縮の際の辞書サイズを設定します。 サイズが bytes なのか kilobytes なのか megabytes を指定しなければいけません。 辞書サイズの最大値は 900000b です。 [b|k|m] のうちのいずれも指定しなければ、 辞書サイズは『 DictionarySize = 2^Size bytes 』の計算結果となります。
PPMd 圧縮の際の使用メモリのサイズを設定します。 サイズが bytes なのか kilobytes なのか megabytes を指定しなければいけません。 メモリサイズの最大値は 256 MB = 2^28 bytes です。 デフォルトの値は 24 (16MB) です。 [b|k|m] のうちのいずれも指定しなければ、 メモリサイズは『 (2^Size) bytes 』の計算結果となります。PPMd は 圧縮時と解凍時で同じ量のメモリを使用します。
PPMd 圧縮の際のモデルオーダーを設定します。サイズは 2 〜 16 の範囲でなければいけません。デフォルトの値は 8 です。
マルチスレッドモードを設定。もしマルチプロセッサのシステムかマルチコアのシステム を使用しているのなら、このスイッチを指定することでスピードアップが見込めます。 このオプションは ( いくつかのメソッドでの ) 圧縮と BZip2 での解凍へのみ影響します。 マルチスレッドモードでは、各スレッドがバッファリングのために 32 MB の RAM を使用します。 {N} を選択した場合、7-Zip は N スレッド使用しようと試みます。
パラメータ | デフォルト | 説明 |
---|---|---|
x=[1 | 3 | 5 | 7 | 9 ] | 5 | 圧縮レベルの設定 |
pass={NumPasses} | 1 | Bzip2 エンコーダに渡す Passes の値を設定 |
d={Size}[b|k|m] | 900000 | BZip2 圧縮の際の辞書サイズの設定 |
mt=[off | on | {N}] | on | マルチスレッドモードを設定。 |
圧縮レベルの設定。
圧縮レベル | 辞書サイズ | Passes の値 | 説明 |
---|---|---|---|
1 | 100000 | 1 | 最速圧縮方式 |
3 | 500000 | 高速圧縮方式 | |
5 | 900000 | 通常圧縮方式 | |
7 | 2 | 最高圧縮方式 | |
9 | 7 | 超圧縮方式 |
BZip2 圧縮の際の辞書サイズを設定します。 サイズが bytes なのか kilobytes なのか megabytes を指定しなければいけません。 辞書サイズの最大値は 900000b です。 [b|k|m] のうちのいずれも指定しなければ、 辞書サイズは『 DictionarySize = 2^Size bytes 』の計算結果となります。
Passes の値を設定します。この値は 1 から 10 まで取れます。 通常圧縮では 1 、最高圧縮では 2 、超圧縮では 7 の値を取っています。 より大きな数字を設定できれば圧縮率は若干良くなり、圧縮速度は遅くなります。
マルチスレッドモードを設定。もしマルチプロセッサのシステムかマルチコアのシステム を使用しているのなら、このスイッチを指定することでスピードアップが見込めます。 {N} を選択した場合、例えば mt=4 とするなら、7-Zip は 4 スレッド使用しようと試みます。
パラメータ | デフォルト | 説明 |
---|---|---|
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, LZMA2, PPMd, BZip2, Deflate, Delta, BCJ, BCJ2, Copy. |
mt=[off | on | {N}] | on | マルチスレッディングモードの設定 |
tc=[off | on] | off | ファイルの作成日時を保管する。 |
圧縮レベルの設定
圧縮レベル | 圧縮メソッド | 辞書サイズ | 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 | 超圧縮 |
メモ: "x" のみの指定は "x=9" として動作します。
ソリッド圧縮の有無を設定します。デフォルトでは 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 |
通常ブロックのサイズの限界を設定すると圧縮率が下がりますが,次の様な利点があります :
ソリッド圧縮された .7z 書庫の更新は、ある程度の再圧縮が必要となる場合があるため、時間がかかる事があります。
使用例 :
s=100f10m
一つのソリッドブロックあたりファイル数 100 個までとサイズ 10 MB までの限界を持つソリッド圧縮を設定。
実行ファイルを圧縮するためのフィルタの設定 : dll,exe,ocx,sfx,sys といった実行ファイルを圧縮する際,最高圧縮時には BCJ2 フィルタを, その他の圧縮時には BCJ フィルタが使われます。 デフォルトでは f=on となっています。
書庫のヘッダ圧縮の設定をします。デフォルトでは hc=on となっています。 書庫ヘッダ圧縮の使用時には,書庫ヘッダの一部が LZMA で圧縮されます。
書庫のヘッダ暗号化の設定をします。デフォルトでは he=off となっています。
圧縮方式の順序を設定します。これは圧縮方式に数字を関連づけるのにも使用されます。 数字は0から始まらなければならず,小さい番号の方の圧縮方式から使われます。
コーダー C1 の出力ストリーム S1 をコーダー C2 の入力ストリーム S2 とします。 ストリームナンバーが指定されない場合はナンバー 0 が使用されます。
通常コーダーは入力ストリームと出力ストリームを一つずつ持ちます。 7z 形式では、複数の入力ストリームと出力ストリームを持つコーダーもあります。
例えば BCJ2 エンコーダーは入力ストリームを 一つ,出力ストリームを四つ持ちます。
マルチスレッドモードを設定。もしマルチプロセッサのシステムかマルチコアのシステム を使用しているのなら、このスイッチを指定することでスピードアップが見込めます。 7-Zip はマルチスレッドモードを LZMA /LZMA2 での圧縮と BZip2 での圧縮/解凍でのみサポートします。{N} を選択した場合、例えば mt=4 とするなら、 7-Zip は 4 スレッド使用しようと試みます。LZMA 圧縮では 2 スレッドのみ使用します。
圧縮方式を設定します。圧縮方式はいくつでも使用できます。 デフォルトの圧縮方式は LZMA 形式です。
使用できるパラメータは以下に示すものです:
対応圧縮方式 :
MethodID | 説明 |
---|---|
LZMA | LZ ベースのアルゴリズム |
LZMA2 | LZMA ベースのアルゴリズム |
PPMd | Dmitry Shkarin の PPMdH 方式に若干の変更を加えた形式 |
BZip2 | BWT アルゴリズム |
Deflate | LZ 法 + Huffman 法 |
Copy | 無圧縮 |
対応フィルタ形式:
MethodID | 説明 |
---|---|
Delta | Delta (差分) フィルタ |
BCJ | x86 実行ファイル用フィルタ |
BCJ2 | x86実行ファイル用フィルタ(version 2) |
ARM | ARM (little endian)実行ファイル用フィルタ |
ARMT | ARM Thumb (little endian)実行ファイル用フィルタ |
IA64 | IA-64 実行ファイル用フィルタ |
PPC | PowerPC (big endian) 実行ファイル用フィルタ |
SPARC | SPARC 実行ファイル用フィルタ |
ファイルによってはフィルタを使用することにより圧縮率を高めることができます。 フィルタは圧縮方式と同時に使用する必要があります。(例えばBCJ+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} | 32 | Match Finder のサイクル値の設定 |
lc={N} | 3 | Literal Context bits の設定 - [0, 8] |
lp={N} | 0 | Literal Pos bits の設定 - [0, 4] |
pb={N} | 2 | Pos Bits の設定 - [0, 4] |
圧縮モードの設定 : 0 = 高速,1 = 通常。 デフォルトでは 1 となっています。
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) が必要です。
LZMAのMatch Finderの値を設定します。デフォルトは bt4 です。 hc* グループのアルゴリズムは圧縮率があまり良くありませんが, ファストモード (a=0) と組み合わせることで非常に高速な圧縮ができます。 必要なメモリ量は辞書サイズ (表の中のパラメータ "d") に依存します。
MF_ID | 辞書サイズ | メモリ使用量 | 説明 | ||
---|---|---|---|---|---|
bt2 | 9.5 * d | + 4 MB | Binary Tree | 2 bytes のハッシュ | |
bt3 | 11.5 * d | 3 bytes のハッシュ | |||
bt4 | 64 KB ... 48 MB | 11.5 * d | 4 bytes のハッシュ | ||
64 MB ... 1024 MB | 10.5 * d | ||||
hc4 | 64 KB ... 48 MB | 7.5 * d | Hash Chain | ||
64 MB ... 1024 MB | 6.5 * d |
注釈 : OS はシステムのためにある程度の物理メモリを必要とします。 そのため最低 32MB の物理メモリは確保しておいて下さい。
LZMA エンコーダに渡す Fast Bytes の値を設定します。 サイズは 5 から 273 の間で設定できます。 デフォルトでは通常圧縮で 32,最高圧縮と超圧縮で 64 に設定されています。 通常,サイズを大きくすると圧縮率はわずかに良くなり処理は遅くなります。
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 の指定時とほぼ同じ圧縮率となります。
Literal Context bits の設定。これは 0 から 8 までの値を取ります。 デフォルトの値は 3 です。大きなファイルを圧縮する際、 lc=4 が良い事もあります。
Literal Pos bits の設定。これは 0 から 4 までの値を取ります。 デフォルトの値は 0 です。lp スイッチは周期が 2^value (lp=value) と等しい周期の 周期的なデータを意味するためのものです。 例えば,32-bit (4 bytes) 周期のデータを圧縮する際には lp=2 とします。 lp スイッチを変更する場合,lc=0 とした方が良い事もよくあります。
Pos bits の設定。これは 0 から 4 までの値を取ります。 デフォルトの値は 2 です。pb スイッチは周期が 2^value (lp=value) と等しい周期の 周期的なデータを意味するためのものです。
LZMA2 は LZMA の更新版です。 LZMA に対して、以下の優位な点を備えています:
パラメータ | デフォルト | 説明 |
---|---|---|
c={Size}[b|k|m] | dictSize * 4 | Chunk (塊) のサイズを設定します。 |
もし ChunkSize を指定しない場合、 LZMA2 は DictionarySize * 4 の値を設定します。
LZMA2 はまた LZMA のすべてのパラメータをサポートしますが、 lp+lc は 4 より大きくできません。
LZMA2 は次の通り使用します: x1 と x3 モードでは Chunk (塊) 毎に 1 スレッド; x5 と x7 と x9 モードでは Chunk (塊) 毎に 2 スレッド。 LZMA2 が 1 つの Chunk (塊) に必要なそのようなスレッド数だけを使用することになっている場合、 ストリームを Chunk (塊) に分割しません。そのため異なるスレッド数では異なる圧縮率が得られます。 1 つか 2 つのスレッドを使用するとき、最高の圧縮率をを得ることができます。
PPMd は PPM に基づいたアルゴリズムです。 このアルゴリズムはほとんど Dmitry Shkarin の PPMdH ソースを元にしています。 PPMd は単純なテキストファイルにおいて,非常に高い圧縮率を誇ります。 圧縮速度と解凍速度は同じです。必要とされるメモリも、圧縮と解凍で同じです。
パラメータ | デフォルト | 説明 |
---|---|---|
{N}mem={Size}[b|k|m] | 24 | PPMD に使用するメモリのサイズを設定します。 |
{N}o={Size} | 6 | PPMD のモデルサイズを設定します。 |
PPMD に使用するメモリのサイズを設定します。 バイト,キロバイト,メガバイトの中から選択する必要があります。 最大値は 2GB = 2^31 バイトです。デフォルトでは 24 (16MB) です。 [b|k|m] の中から選択しなかった場合,メモリのサイズは 2^Size バイトで計算されます。 PPMD が必要とするメモリのサイズは、圧縮と解凍で同じです。
PPMD のモデルサイズを設定します。サイズは 2 から 32 の間で指定でき、デフォルトでは 6 です。
BCJ2 は32-bit x86 実行ファイルの分岐変換の version 2 です。 これは分岐命令をより圧縮できるように変換します。
BCJ2 エンコーダーは入力ストリームを一つ,出力ストリームを四つ持ちます:
LZMAが使われている場合,s1 と s2 ストリームのための辞書サイズ(ほとんどの場合 512KB で十分)は s0 ストリームの辞書サイズよりも小さくできるでしょう。
バイト列の Delta オフセット値を指定する事が可能です。例えば、16bit ステレオの WAV ファイルを圧縮する場合、 "0=Delta:4" を指定できます。デフォルトの Delta オフセット値は 1 です。
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 方式で追加します。
スイッチ: -t (書庫の形式を指定),