7zフォーマットの高速圧縮(zipやgzipなど)


1

一言で言うと、Deflate圧縮はzip形式でのみ使用できます -tzip 7zipで?


I / Oの速度を圧縮しない場合と同じかそれ以上に保ちながら、大きなディレクトリ(数百GiB)をディスクから別のディレクトリにアーカイブしたいのです。

私は7zフォーマットが様々な理由で好きですが、LZMAとBzip2の圧縮は、 -mx=1。私はもう試した 7z a -mm=Zip -mx=1 -mmt=4 (そして -mm=GZip これはDeflateも使用しますが、ファイルスキャンフェーズの後に引数エラーが発生します。 http://7zip.bugaco.com/7zip/MANUAL/switches/method.htm

私の典型的な解決策はとタールだろう .tar.lzo (LZOP)、デフォルトの圧縮率でシングルスレッドで100 MiB / sに達します。または .tar.gzGZIP=-1。非常に高速なコンプレッサーはマルチスレッド対応のlbzip2ですが、tar自体からは実行できません。

私のソースディスクは通常20 MiB / s、時には100(数MiBの大きさのファイル)で読みます。ターゲットは最大80 MiB /秒で書き込みます。だからこれはコンプレッサーが持っているべき速度、理想的にはシングルスレッドの時でさえである。最大8コアおよび16 GB RAMが利用可能です。

回答:


4

あなたが試すことができます 7-Zip Zstandard バージョン。このフォークは、圧縮と解凍が非常に速い追加コーデックをサポートします。

これは使用されたコーデックの短い要約です:

  1. LZ4 - 最も速い圧縮/解凍、しかしあまり圧縮比

  2. Lizard / LZ5 - LZ4よりも比率が良く、LZ4よりも解凍時のほうが速いのが普通ですが、圧縮は少し遅くなります

  3. BrotliとZstandard - zstdは多くの場合Brotliより少し速いですが、テキストコンテンツに関しては、Brotliが少し良いかもしれません;)

スレッド化は5つのコーデックすべて、現在最大256スレッドまでサポートされています。

実行してください:

7z a archiv.7z -m0=lz5 -mx1 -mmt=4

7z a archiv.7z -m0=zstd -mx1 -mmt=4

7z a archiv.7z -m0=brotli -mx1 -mmt=1 .. 7z a archiv.7z -m0=brotli -mx1 -mmt=256

等々...


2

非常に高速なコンプレッサーはマルチスレッド対応のlbzip2ですが、tar自体からは実行できません。

GNU tarでは、どのコンプレッサーをフラグで指定することができます。例: tar -I "zstd -T0" または tar --use-compress-program=pigz

あなたが速いシングルスレッドのコンプレッサーを望むなら、あなたはlz4を使うことができます。

しかし、これを使用する必要はありません。選択したコンプレッサーを通して出力をパイプ処理することもできます。

# create
tar -c /inputdir | pigz --fast > output.tar.gz
# decompress
pigz -d input.tar.gz | tar -x 

私のソースディスクは通常20 MiB / s、時には100 MiB

これはあなたが実際にはランダムアクセスの読み取りではなくボトルネックになっているように聞こえます。大きなファイルがある場合は、それらを最適化する必要があります。あなたがたくさんの小さなファイルを持っているなら、あなたはディスクがマウントされていることを確認するべきです relatime そしてあなたも試すことができます 断食者 私は多くの小さなファイルの場合に最適化しました。


いいえ、私のボトルネックは通常I / Oではありません(lzopを除く、これはI / Oよりはるかに高速です)。私が「20、時には100」と言うとき、私はあるディスクが20だけで一貫して読むことを意味しますが、私が持っている他のいくつかは速いです。現在私はlbzip2、またはI / Oがlbzip2には速すぎる場合はlzopにパイプしています。 fastarについて言及してくれてありがとう、私はいくつかのディスクでそれを試します。
Nemo

あなたのREADMEがext4に言及しているので、おそらく私のディスクはほとんど外部NTFSディスクであると言った方がいいでしょう...
Nemo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.