提取tar.gz的最快方法


Answers:


57

Pigz是gzip的并行版本。尽管它仅使用一个线程进行解压缩,但它会启动3个其他线程进行读取,写入和检查计算。您的结果可能会有所不同,但我们发现某些数据集的解压缩效果显着改善。安装Pigz之后,可以使用以下命令解压缩tar文件:

Pigz -dc target.tar.gz | 焦油xf-


11
+1。FWIW,您也可以将其写为tar -xvf --use-compress-program=pigz filenamehere。(-z等于--use-compress-program=gzip。)或者,您甚至可以gzip成为的符号链接pigz,并继续使用-zxvf
ruakh 2012年

2
@ruakh,我必须放在-xf之后--use-compress-program=pigz,否则会出错。由于某种原因,它没有比使用更快gzip
jonderry 2015年

对于bzip2pbzip2p用于并行)。tar --use-compress-program=pbzip2 -xvf file.tar.bz2
alfC

有没有办法pv在同时使用--use-compress-program=pigz标志的同时使用命令显示进度或等价?在压缩期间,我可以执行操作gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData,但不确定在untar / uncompression期间如何执行此操作。
Stefan Lasiewski '18

13

如果tar球中有很多很多小文件,请取消“ v”参数,然后重试!


3
我从不使用-v参数。不知道为什么人们在控制台中需要那么多的噪音。
Eimantas 2011年

9
@Eimantas当解压缩包含许多千兆字节文件的文件时,您将需要一些进度指示。:)
迈克尔·汉普顿

@TimHughes:真的很高兴知道,请作为单独的答案发布!
smci

迈克尔·汉普顿(Michael Hampton),如果您有数GB的文件,但又混有大量小文件,则您有充分的理由不使用-v,在我的本地测试中,这会使tar非常慢,特别是如果tar在远程服务器上运行通过终端,我要做的是观看du -s目录,以便我可以看到目录正在增长……
Luciano Andress Martini

可能值得使用--checkpoint=NUMBER每隔NUMBER个记录显示进度消息)而不是-v
Stefan Lasiewski

6

如果您想查看进度,请使用pv。这是一个例子:

pigz -dc mysql-binary-backup.tar.gz | pv | tar xf -
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.