是否有某种方法可以持续压缩程序的输出(几乎实时)?
例如,我有这个程序,它会向 stderr 产生(大量)输出。我想做类似的事情./my-program 2> tar -<someoptions> stderroutput.tar.gz
答案1
如果我理解正确的话,您想要压缩标准错误流的内容并将其保存到文件中。如果是这样,请尝试以下操作:
./my-program 2>&1 | gzip > stderroutput.gz
答案2
tar
不压缩数据;它仅用于存档多个文件合二为一。要压缩流,您需要使用gzip
、xz
或bzip2
类似的。(虽然gzip
压缩率最差,但也是最快的之一,因此它可能是这里的最佳选择。)
例如:
myapp 2> >(gzip > stderr.gz)
或者
(myapp 2>&1 1>&3 | gzip > stderr.gz) 3>&1