错误

错误

为什么这是不可能的?

pv ${dest_file} | gzip -1

pv是一个进度条

错误

gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
   0 B 0:00:00 [   0 B/s] [>                                   ]  0%

这有效

pv ${file_in} | tar -Jxf - -C /outdir

答案1

您想要实现的是查看压缩过程的进度条。但使用 是不可能的pv。它只显示传输进度,您可以通过类似的方法来实现(无论如何,这是第一个链接在谷歌):

pv input_file | gzip > compressed_file

进度条会快速运行,然后它将等待压缩,这是使用pv.

但你可以反过来做,观察输出流,机器人在这里你将无法看到实际进度,因为pv不知道压缩文件的实际大小:

gzip <input_file | pv > compressed_file

到目前为止我发现的最好的是来自命令行fu即使有速率限制和目录压缩:

$D=directory
tar pcf - $D | pv -s $(du -sb $D | awk '{print $1}') --rate-limit 500k | gzip > target.tar.gz

答案2

是的,使用文件的行而不是字节是可能的。你会得到一个足够准确的进度条:

cat input_file | pv -ls $( wc -l input_file ) | gzip -c -- > compressed_file

答案3

如果可用,您可以使用 7z 来通过超级简单的命令获取进度百分比:

7z a spaCy.tar.gz spaCy.tar 

输出示例:

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (906E9),ASM,AES-NI)

Open archive: spaCy.tar.gz
--
Path = spaCy.tar.gz
Type = gzip
Headers Size = 20

Scanning the drive:
1 file, 326451200 bytes (312 MiB)

Updating archive: spaCy.tar.gz

Items to compress: 1

 32% U spaCy.tar   

         

相关内容