我需要使用像xz这样的压缩器来压缩巨大的焦油档案。
我完全了解以前的问题,如Create a tar.xz in one command和Utilizing multi core for tar+gzip/bzip compression/decompression
从它们中,我发现这个命令行主要起作用:
tar -cvf - paths_to_archive | xz -1 -T0 -v > OUTPUT_FILE.tar.xz我使用管道解决方案,因为我绝对必须能够将选项传递给xz。特别是,xz非常占用CPU,所以我必须使用-T0来使用所有可用的核心。这就是为什么我不使用其他的可能性,比如tar的--使用-压缩-程序,或者-J选项。
不幸的是,我真的希望将tar和xz的日志输出(即非存档输出)捕获到日志文件中。在上面的例子中,注销总是由这些-v选项生成的。
使用上面的命令行,日志输出现在打印在我的终端上。
因此,问题是,当您使用管道连接tar和xz时,您不能使用以下内容结束命令行
>Log_File 2>&1因为早些时候
> OUTPUT_FILE.tar.xz有解决办法吗?
我试着用这样的子壳包装
(tar -cvf - paths_to_archive | xz -1 -T0 -v > OUTPUT_FILE.tar.xz) >Log_File 2>&1但这不起作用。
发布于 2018-01-25 22:37:06
首先,-cvf -可以被cv取代。
但是tar cvf -的标准输出输出是tar文件,该文件被管道传输到xz中。我不确定我是否完全理解,也许这是:
tar cv paths | xz -1 -T0 > OUTPUT.tar.xz 2> LOG.stderr或
tar cv paths 2> LOG.stderr | xz -1 -T0 > OUTPUT.tar.xz或
tar cv paths 2> LOG.tar.stderr | xz -1 -T0 > OUTPUT.tar.xz 2> LOG.xz.stderr不确定是否实现了-T0,您使用的是哪个版本的xz?(也许https://github.com/vasi/pixz值得一看)在某些系统上安装了sudo apt-get install pv的pv程序比xz -v更能显示管道的进展情况。它将告诉你ETA的进展百分比:
size=$(du -bc path1 path2 | tail -1 | awk '{print$1}')
tar c paths 2> LOG.stderr | pv -s$size | xz -1 -T0 > OUTPUT.tar.xzhttps://stackoverflow.com/questions/48452726
复制相似问题