我需要使用像 xz 这样的压缩器来压缩巨大的 tar 档案。
我完全了解以前的问题,例如 在一个命令中创建 tar.xz 和 利用多核进行 tar+gzip/bzip 压缩/解压缩
从他们那里,我发现这个命令行最有效:
tar -cvf - paths_to_archive | xz -1 -T0 -v > OUTPUT_FILE.tar.xz
我使用管道解决方案是因为我绝对必须能够将选项传递给 xz。 特别是,xz 非常占用 CPU,所以我必须使用 -T0 来使用所有可用的内核。这就是我不使用其他可能性的原因,例如 tar 的 --use-compress-program 或 -J 选项。
不幸的是,我真的很想将所有 tar 和 xz 的日志输出(即非归档输出)捕获到一个日志文件中。在上面的示例中,注销总是由这些-v
选项生成。
使用上面的命令行,该日志输出现在打印在我的终端上。
所以,问题是当你像上面那样使用管道连接 tar 和 xz 时,你不能用类似的东西结束命令行
>Log_File 2>&1
因为之前
> OUTPUT_FILE.tar.xz
有解决办法吗?
我尝试像这样包裹在一个子shell中
(tar -cvf - paths_to_archive | xz -1 -T0 -v > OUTPUT_FILE.tar.xz) >Log_File 2>&1
但这没有用。