Bzip2とgzipは1つのコアのみを使用しますが、多くのコンピューターには複数のコアがあります。ただし、lbzip2、pbzip2、pigsなどのプログラムがあり、利用可能なすべてのコアを使用し、bzip2およびgzipとの互換性が保証されています。
tar cfa file.tar.bz2 directory
がbzip2ではなくlbzip2/pbzip2を使用するように、これらのプログラムをデフォルトで使用する最良の方法は何ですか?もちろん、私は何も壊したくありません。
Bzip2、bunzip2、bzcatをlbzip2に、gzip、gunzip、gzcat、zcatをpigzにシンボリックリンクできます。
Sudo apt-get install lbzip2 pigz
cd /usr/local/bin
ln -s /usr/bin/lbzip2 bzip2
ln -s /usr/bin/lbzip2 bunzip2
ln -s /usr/bin/lbzip2 bzcat
ln -s /usr/bin/pigz gzip
ln -s /usr/bin/pigz gunzip
ln -s /usr/bin/pigz gzcat
ln -s /usr/bin/pigz zcat
/usr/share/doc/lbzip2/README.gzは/usr/share/doc/pbzip2/README.gzよりも「見栄えが良い」ので、pbzip2ではなくlbzip2を選択しました。また、tarマニュアル lbzip2について話す 。
編集:
precise Pangolinに含まれているpigz-2.1.6は、不明なサフィックス(たとえば、initramfs-*。img)を持つファイルの解凍を拒否します。これは、Quantalに同梱されているpigz-2.2.4で修正されています。そのため、Quantalまで待つか、 Quantalパッケージ を手動でインストールするか、gunzip/gzcat/zcatをまだリンクしないでください。
シンボリックリンクのアイデアは本当に素晴らしいです。
別の有効な解決策は、エイリアスtar
:
alias tar='tar --use-compress-program=pbzip2'
またはそれぞれ
alias tar='tar --use-compress-program=pigz'
別の種類のデフォルトが作成されます。
シンボリックリンクの答えは本当に間違っています。システム全体のデフォルトのgzip(またはbzip2)をpigz(またはpbzip2)に置き換えます。並列実装は単一プロセスバージョンと非常に似ていますが、コマンドラインオプションの微妙な違いは、それらの違いに依存するコアシステムプロセスを破壊する可能性があります。
「--use-compress-program」オプションの方がはるかに良い選択です。 2番目のオプション(エイリアスによく似ています)は、GNU tarでサポートされるTAR_OPTIONS環境変数を設定することです。
$ export TAR_OPTIONS = "-use-compress-program = pbzip2" $ tar czf myfile.tar.bz2 mysubdir /
魅力的なオプションの1つは、デフォルトでマルチスレッドを使用するようにtarを再コンパイルすることです。 このstackoverflowの答え からコピー
ソースからtarをビルドする場合は、パラメーターを使用して再コンパイルできます
--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip
これらのオプションを使用してtarを再コンパイルした後、tarのヘルプの出力を確認できます。
$ tar --help | grep "lbzip2\|plzip\|pigz"
-j, --bzip2 filter the archive through lbzip2
--lzip filter the archive through plzip
-z, --gzip, --gunzip, --ungzip filter the archive through pigz