首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重定向xz的正常标准,什么时候做tar xz?

如何重定向xz的正常标准,什么时候做tar xz?
EN

Stack Overflow用户
提问于 2018-01-25 22:11:29
回答 1查看 3.6K关注 0票数 0

我需要使用像xz这样的压缩器来压缩巨大的焦油档案。

我完全了解以前的问题,如Create a tar.xz in one commandUtilizing multi core for tar+gzip/bzip compression/decompression

从它们中,我发现这个命令行主要起作用:

代码语言:javascript
复制
tar -cvf - paths_to_archive | xz -1 -T0 -v > OUTPUT_FILE.tar.xz

我使用管道解决方案,因为我绝对必须能够将选项传递给xz。特别是,xz非常占用CPU,所以我必须使用-T0来使用所有可用的核心。这就是为什么我不使用其他的可能性,比如tar的--使用-压缩-程序,或者-J选项。

不幸的是,我真的希望将tar和xz的日志输出(即非存档输出)捕获到日志文件中。在上面的例子中,注销总是由这些-v选项生成的。

使用上面的命令行,日志输出现在打印在我的终端上。

因此,问题是,当您使用管道连接tar和xz时,您不能使用以下内容结束命令行

代码语言:javascript
复制
>Log_File  2>&1

因为早些时候

代码语言:javascript
复制
> OUTPUT_FILE.tar.xz

有解决办法吗?

我试着用这样的子壳包装

代码语言:javascript
复制
(tar -cvf - paths_to_archive | xz -1 -T0 -v > OUTPUT_FILE.tar.xz) >Log_File  2>&1

但这不起作用。

EN

回答 1

Stack Overflow用户

发布于 2018-01-25 22:37:06

首先,-cvf -可以被cv取代。

但是tar cvf -的标准输出输出是tar文件,该文件被管道传输到xz中。我不确定我是否完全理解,也许这是:

代码语言:javascript
复制
tar cv paths | xz -1 -T0 > OUTPUT.tar.xz 2> LOG.stderr

代码语言:javascript
复制
tar cv paths 2> LOG.stderr | xz -1 -T0 > OUTPUT.tar.xz

代码语言:javascript
复制
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 pvpv程序比xz -v更能显示管道的进展情况。它将告诉你ETA的进展百分比:

代码语言:javascript
复制
size=$(du -bc path1 path2 | tail -1 | awk '{print$1}')
tar c paths 2> LOG.stderr | pv -s$size | xz -1 -T0 > OUTPUT.tar.xz
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48452726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档