常用方法
-T程序有选项:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
您可以使用多线程版本的归档程序或压缩程序实用程序。
最受欢迎的多线程归档器是pigz(而不是gzip)和pbzip2(而不是bzip2)。 例如:
$ tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 paths_to_archive
$ tar --use-compress-program=pigz -cf OUTPUT_FILE. paths_to_archive
Archiver必须接受-d。 如果替换实用程序没有此参数和/或您需要指定其他参数,则使用管道(如有必要,添加参数):
$ tar cf - paths_to_archive | pbzip2 > OUTPUT_FILE.
$ tar cf - paths_to_archive | pigz > OUTPUT_FILE.
单线程和多线程的输入和输出是兼容的。 您可以使用多线程版本进行压缩,并使用单线程版本进行解压缩,反之亦然。
的p7zip
对于压缩的p7zip,您需要一个小的shell脚本,如下所示:
#!/bin/sh
case $1 in
-d) 7za -txz -si -so e;;
*) 7za -txz -si -so a .;;
esac 2>/dev/null
保存为。 这里的用法示例如下:
$ tar -I -cf OUTPUT_FILE.tar.7z paths_to_archive
$ tar -I -xf OUTPUT_FILE.tar.7z
XZ
关于多线程XZ支持。 如果您运行的是XZ Utils的5.2.0或更高版本,则可以通过环境变量XZ_DEFAULTS(例如XZ_DEFAULTS="-T 0")将-T或--threads设置为适当的值来利用多个内核进行压缩。
这是5.1.0alpha版本的一个人的片段:
多线程压缩和解压缩尚未实现,所以这一点 选项现在没有效果。
但是,这对于没有的文件的解压缩也不起作用已启用线程压缩。 从版本5.2.2的man:
螺纹减压尚未实施。 它只会起作用 包含多个具有大小信息的块的文件 块头。 以多线程模式压缩的所有文件都符合此要求 条件,但在单线程模式下压缩的文件甚至不会 --block-size = size。
用替换重新编译
如果从源代码构建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