私はしばしばログファイルを集めてそれを中央のサーバー(他の会社が所有)にアップロードしなければなりません。中央サーバーにはファイルのサイズ制限があるので、私はまだZip形式の最小のファイルを作成しようとしています。
私が必要としているのが小さいファイルサイズだけで、テキストファイルをZip形式に圧縮するときに使用するのに最適な設定は何ですか?
私は明白なそして選ばれた超圧縮をしました、そして、私はLZMAがdeflateより良い仕事をすることに気付きました、しかし私にそれらをすべてテストするための選択肢のはるかに多くの他の順列があります。
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
.zipではなく.7z形式を使用できる場合は、PPMDを次のオプションとともに使用し、それ以外はすべて圧縮レベルで設定されたままにします。
私は定期的にこれらのオプションを使ってサーバー/テキストログ(60MB +)を圧縮していて、それらは通常元のサイズの1〜2%で出てきます。
Ubuntuサーバー14.04.03のdb.fdb 1,2 GB(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を得ないが圧縮のためにほぼ2倍多くの時間を費やす。だれでも自分で決めます。
7Zipの詳細なドキュメンテーションを詳しく調べ、高度なLZMA2パラメータに関する7zのソースコードをいくつか読んだ後は、以下のより良い方法です。実際のテストファイルを、以前に承認された解決策よりも2倍から4倍も削減できました(7zのマンページでも)。
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圧縮が想定されていますが、7Zipでは-m0=LZMA2:27
や-m0=LZMA2:d25
などの高度なLZMA2オプション、または次のようなパラメータの配列を渡すことで、さらにパフォーマンスを向上させることができます。
-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1
このようなパラメータは、私がテストした7zバージョンでは尊重されていないようですが、さらに詳しく調べるか、7zコードにパッチを適用して正しく解析することをお勧めします。それとも動作するはずで、テストされたビルドで壊れているだけかもしれません。
"split to volume、bytes"フィールドをサーバーの最大許容ファイルサイズに設定します(バイト単位で、 "KB"や "MB"のような一般的な省略形を受け入れるように見えます)。 Zipファイルがそのサイズを超えると、7-Zipはintegration_serviceLog.Zip.001、integration_serviceLog.Zipのように自動的に複数のファイルに分割します。 002など(昔は、PK Zipは複数のフロッピーディスクにまたがってZipファイルを分割するためにこれを使用していました。)それらを解凍するには、すべてのファイルが必要です。あるファイルに最適なものは別のファイルには異なる可能性があるので、絶対に最適な圧縮設定を気にせずにこれを使用してください。ログをコピーします。