(これを最初にserverfaultに投稿しましたが、おそらくここに属していることに気付きました。)
7za(p7Zip)9.20を使用して非常に大きなテキストファイルを圧縮しようとしています。 -mmtオプションは効果がないようです。 -mmt = onと-mmt = 2の両方を試しました。これは8コアマシンです。ある人は、引数として-m0 = lzma2を追加することを提案しましたが、それは私にE_INVALIDARGを与えるだけです。これを機能させる方法を誰かが知っていますか?
これは効果がありません:
7za a -mx=9 -mmt=2 -p myarchive.Zip bigfile.txt
そして、これはエラーで失敗します:
7za a -m0=lzma2 -mx=9 -mmt=2 -p myarchive.Zip bigfile.txt
7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7Zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)
Scanning
Creating archive release_20120601-1-http.Zip
System error:
E_INVALIDARG
-m(圧縮方法の設定)スイッチ#ZipMultiThread-7Zipのマニュアルとドキュメント によると、mt
はデフォルトでon
になるため、指定する必要はありません。
ただし、7ZipのDEFLATEアルゴリズムの実装はマルチスレッドをサポートしていません。
あなたがすでに発見したように、
7za a archive.Zip bigfile
1つのコアのみを使用します。
ただし、.Zip
ファイルは、すべてのファイルを個別に圧縮します。 いくつかのファイルを圧縮するとき、マルチスレッドオプションはコアごとに一度に1つのファイルを圧縮します。
試してみてください。
7za a archive.Zip bigfile1 ... bigfileN
使用可能なすべてのN
コアを使用します。
singleファイルの圧縮を高速化する場合は、2つの選択肢があります。
bigfile
をチャンクに分割します。
別の圧縮アルゴリズムを使用します。
たとえば、7ZipのBZip2アルゴリズムの実装はマルチスレッドをサポートしています。
構文は次のとおりです。
7za a -mm=BZip2 archive.Zip bigfile
また、構文エラーは、.Zip
コンテナにLZMアルゴリズムを使用しようとしたことが原因で発生します。それは可能ではありません。
.Zip
conatinersの可能なアルゴリズムは、DEFLATE(64)、BZip2、圧縮なしです。
LZMアルゴリズムを使用する場合は、.7z
コンテナを使用します。このコンテナは、PPMd、BZip2、DEFLATE、BCJ、BCJ2および圧縮なしのアルゴリズムも処理します。
これは古い質問であり、特定の質問に対する回答ではなく、質問の精神に対する回答です(すべてのコアを使用してZip形式を圧縮します)。
pigz(.Zipオプション付きの並列gzip)
pigz -K -k archive.Zip bigfile txt
これにより、同じ圧縮レベルでZip互換ファイルが7倍速くなります。
シングルおよびマルチコアを使用したZip互換および非Zipコンプレッサーの簡単な比較。
fedora 20で1.07 GBのtxtファイルを圧縮するためのi7-2600kのウォールタイム
67s (120mb) 7za (Zip,1 thread)
15s (141mb) 7za -mx=4 (Zip,1 thread)
17s (132mb) Zip (Zip,1 thread)
5s (131mb) pigz -K -k (Zip,8 threads)
9s (106mb) bsc (libbsc.com) (not Zip,8 threads)
5s (130mb) zhuff -c2 (not Zip,8 threads)
2s (149mb) zhuff (not Zip,8 threads)
解凍するウォールタイム
4.2s unzip -t
2.0s pigz -t
5.1s bsc d
0.5s zhuff -d
-mmt [N + 1]を使用するだけです
例:-mmt2は1つのスレッド、-mmt9は8つのスレッド