2011-05-10 14:19:13 +0000 2011-05-10 14:19:13 +0000
69
69
Advertisement

7 Zipを使ってファイルを圧縮するときに使用する最良のオプションは何ですか?

Advertisement

ログファイルを集めて中央サーバー(他社所有)にアップロードすることが多いです。中央サーバーにはファイルのサイズ制限があるので、ZIP形式のままでできるだけ小さいファイルを作成しようとしています。

テキストファイルをZIP形式に圧縮する際に、ファイルサイズが小さいことだけが必要な場合、どのような設定にするのが良いでしょうか?

0x1&

私は当然のことながら超圧縮を選択しましたが、LZMAの方がdeflateよりも良い仕事をすることに気づきました。

Advertisement
Advertisement

回答 (6)

65
65
65
2014-04-15 15:15:36 +0000

7-Zipで作成できる最小の標準ZIPファイルを作成するには、試してみてください。

7z a -mm=Deflate -mfb=258 -mpass=15 -r foo.zip C:\Path\To\Files\*

ソース。 最高の、標準ZIP圧縮を実現するにはどうすればいいのか

その他、ZIPの標準を気にしないなら、以下の超設定を使ってみてください。

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

どれです。

-t7z 7z archive

-m0=lzma
       lzma method

-mx=9 level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on
``` 0x1&
14
14
14
2013-07-15 10:33:24 +0000

.zipではなく.7z形式を使用できるのであれば、単純に PPMD を以下のオプションで使用し、他のすべてを Compression Level:

で設定したままにしておきます。7z_ - 圧縮方法。圧縮方法: PPMD - 圧縮レベル: Ultra

。Ultra_

私は定期的にこれらのオプションを使用してサーバ/テキストログ(60MB以上)を圧縮していますが、通常は元のサイズの1-2%*で出てきます。

8
Advertisement
8
8
2019-06-17 16:25:32 +0000
Advertisement

多くの実験をし、7zip の詳細なドキュメントを調べ、高度な LZMA2 パラメータに関する 7z のソースコードのいくつかを読んだ後、以下により良い方法を示します。これにより、1GB の実世界のテストファイルを ここや 7z のマニュアルページに掲載されている以前に受け入れられていた解決策 に比べて、2〜4倍以上も削減することができました。

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

ここでは LZMA2 圧縮を想定していますが、-m0=LZMA2:27-m0=LZMA2:d25 のような高度な LZMA2 オプションや、

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

のようなパラメータの配列を渡すことで、7zip でさらに良いパフォーマンスを得ることができるかもしれません。あるいは、動作するはずのものが、テストしたビルドでは壊れているだけなのかもしれません。

7
7
7
2016-08-15 13:27:49 +0000

Ubuntuサーバ14.04.03のdb.fdb 1,2GB (1236598784 B)をVM上のp7zip [64] 9.20で比較してみました:

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

という結果になりました。

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

私は2番目の方法がうまくいくと思います。しかし、最高の “ビュー "と簡単に覚えているためには、最初の方法です - 小さなファイルと最大圧縮のポイントがありません。2と3の方法の間では、我々は余分な小さな7zを取得することはありませんが、圧縮のためにほぼ2oの時間を支払う。誰もが彼自身で決定します。

3
Advertisement
3
3
2019-12-05 09:37:09 +0000
Advertisement

最適な圧縮パラメータを経験的に見つけるための実験をしてみることにしました。

使用したツールは 7-ZIP finetuner です。このツールは、パラメータを変えながら圧縮を繰り返すだけで最適なパラメータを探してくれます。高速なコンピュータでも、1つのファイルの実行に1時間以上かかることがあります。

試行するパラメータは以下の通りです。

LC : number of Literal Context bits
LP : number of Literal Pos bits
PB : number of Pos Bits
YX : level of file analysis
FB : number of Fast Bytes

辞書サイズのデフォルトパラメータは512MB、ソリッドブロックサイズはOnのままにしています。ツールはLZMA法を使用しています。

いくつかの種類のファイルでのパラメータの最適な組み合わせは以下の通りでした。

なお、同じタイプのファイルであっても、最良の値は一定ではなかった。

0x4&

結論。**各ファイルにはそれぞれ独自の最適な組み合わせがあるため、最適なオプションはありません。すべてのパラメータを限界まで駆動させることはできますが、改善が保証されるわけではありません。

LC : 8
LP : 0
PB : 1
YX : 5
FB : 273

いくつかの 7-Zip 参照。

0
0
0
2011-05-10 14:37:36 +0000

split to volume, bytes" フィールドには、サーバが許可する最大ファイルサイズ(バイト単位だと思うが、"KB" や “MB” のような一般的な略語を受け付けているように見える)を設定する。もし zip ファイルがそのサイズを超えると、7-zip は自動的に複数のファイルに分割します。解凍するには、すべてのファイルが存在する必要があります。あるファイルに最適な圧縮設定は別のファイルには異なるかもしれないので、特定のファイルのセットに使用する絶対的な最高の圧縮設定を心配する代わりにそれを使用してください。

Advertisement

関連する質問

11
6
13
3
2
Advertisement
Advertisement