Jen*_*Jen 295
您还可以使用tar标志"--use-compress-program ="告诉tar要使用的压缩程序.
例如使用:
tar -c --use-compress-program=pigz -f tar.file dir_to_zip
Run Code Online (Sandbox Code Playgroud)
Mar*_*ler 278
您可以使用pigz而不是gzip,它在多个内核上执行gzip压缩.而不是使用-z选项,你将通过pigz管道:
tar cf - paths-to-archive | pigz > archive.tar.gz
Run Code Online (Sandbox Code Playgroud)
默认情况下,pigz使用可用内核的数量,如果无法查询,则为8.您可以使用-pn询问更多内容,例如-p 32. pigz与gzip具有相同的选项,因此您可以使用-9请求更好的压缩.例如
tar cf - paths-to-archive | pigz -9 -p 32 > archive.tar.gz
Run Code Online (Sandbox Code Playgroud)
Max*_*lov 103
有tar
程序选项:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
Run Code Online (Sandbox Code Playgroud)
您可以使用多线程版本的归档程序或压缩程序实用程序.
最受欢迎的多线程归档器是pigz(而不是gzip)和pbzip2(而不是bzip2).例如:
$ tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 paths_to_archive
$ tar --use-compress-program=pigz -cf OUTPUT_FILE.tar.gz paths_to_archive
Run Code Online (Sandbox Code Playgroud)
Archiver必须接受-d.如果替换实用程序没有此参数和/或您需要指定其他参数,则使用管道(如有必要,添加参数):
$ tar cf - paths_to_archive | pbzip2 > OUTPUT_FILE.tar.gz
$ tar cf - paths_to_archive | pigz > OUTPUT_FILE.tar.gz
Run Code Online (Sandbox Code Playgroud)
单线程和多线程的输入和输出是兼容的.您可以使用多线程版本进行压缩,并使用单线程版本进行解压缩,反之亦然.
对于压缩的p7zip,您需要一个小的shell脚本,如下所示:
#!/bin/sh
case $1 in
-d) 7za -txz -si -so e;;
*) 7za -txz -si -so a .;;
esac 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
保存为7zhelper.sh.这里的用法示例如下:
$ tar -I 7zhelper.sh -cf OUTPUT_FILE.tar.7z paths_to_archive
$ tar -I 7zhelper.sh -xf OUTPUT_FILE.tar.7z
Run Code Online (Sandbox Code Playgroud)
关于多线程XZ支持.如果您运行的是XZ Utils的5.2.0或更高版本,则可以通过环境变量XZ_DEFAULTS(例如)设置-T
或--threads
使用适当的值来利用多个内核进行压缩XZ_DEFAULTS="-T 0"
.
这是5.1.0alpha版本的一个人的片段:
多线程压缩和解压缩尚未实现,因此此选项暂时无效.
但是,对于尚未使用线程进行压缩的文件进行解压缩,这将不起作用.从版本5.2.2的man:
螺纹减压尚未实施.它仅适用于包含块头中具有大小信息的多个块的文件.以多线程模式压缩的所有文件都满足此条件,但即使使用--block-size = size,也不会以单线程模式压缩文件.
如果从源代码构建tar,则可以使用参数重新编译
--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip
Run Code Online (Sandbox Code Playgroud)
使用这些选项重新编译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
Run Code Online (Sandbox Code Playgroud)
pan*_*icz 12
您可以使用-I
tar的--use-compress-program
switch 的快捷方式,并pbzip2
在多个内核上调用bzip2压缩:
tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 DIRECTORY_TO_COMPRESS/
Run Code Online (Sandbox Code Playgroud)