尽管许多计算机具有多个内核,但Bzip2和gzip仅使用一个内核。但是,有些程序(例如lbzip2,pbzip2和Pigz)使用所有可用的内核,并承诺与bzip2和gzip兼容。
那么默认情况下使用这些程序的最佳方法是什么,以便tar cfa file.tar.bz2 directory
使用lbzip2 / pbzip2而不是bzip2?当然,我不想破坏任何东西。
尽管许多计算机具有多个内核,但Bzip2和gzip仅使用一个内核。但是,有些程序(例如lbzip2,pbzip2和Pigz)使用所有可用的内核,并承诺与bzip2和gzip兼容。
那么默认情况下使用这些程序的最佳方法是什么,以便tar cfa file.tar.bz2 directory
使用lbzip2 / pbzip2而不是bzip2?当然,我不想破坏任何东西。
Answers:
您可以将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
我选择了lbzip2而不是pbzip2,因为/usr/share/doc/lbzip2/README.gz看起来比/usr/share/doc/pbzip2/README.gz更“小”。另外,tar手册还讨论了lbzip2。
编辑:
精确的穿山甲中包含的pigz-2.1.6拒绝解压缩后缀未知的文件(例如initramfs-*。img)。这在Quantal附带的Pigz-2.2.4中已修复。因此,您可能要等到Quantal,手动安装Quantal软件包,或者暂时不要链接gunzip / gzcat / zcat。
sudo dpkg-divert --divert /bin/gunzip.orig --rename /bin/gunzip; sudo ln -s /usr/bin/pigz /bin/gunzip
但是Pigz可能不是100%与所有gzip标志兼容,因此请小心。
symlink答案确实是不正确的。对于整个系统,它将用Pigz(或pbzip2)替换默认的gzip(或bzip2)。尽管并行实现与单个进程版本非常相似,但命令行选项中的细微差别可能会破坏依赖那些差异的核心系统进程。
“ --use-compress-program”选项是一个更好的选择。第二个选项(非常类似于别名)是设置GNU tar支持的TAR_OPTIONS环境变量:
$ export TAR_OPTIONS =“-use-compress-program = pbzip2” $ tar czf myfile.tar.bz2 mysubdir /
一种引人入胜的选择是默认情况下重新编译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
在您的〜/ .bash_aliases中使用:
alias gzip="pigz"
alias gunzip="unpigz"
gzip
(或gunzip
)程序时,这才有效。其他程序(如tar
)将不受此影响。