You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tar与openssl管道加密时,如何将标准输出和错误输出重定向到日志文件

问题原因

你当前的重定向仅作用于管道最后一个openssl命令,但管道中前一个tar命令的标准错误输出(即-v选项打印的文件列表等信息)并未被重定向,仍会直接输出到屏幕。同时openssl通过-out参数指定了加密文件的输出路径,它的标准输出没有内容,因此test123.log会是空文件。

解决方案

根据你的需求,提供两种常见处理方式:

方式一:合并所有错误输出到同一日志文件

将tar和openssl的标准错误输出都重定向到同一个错误日志,标准输出(此处无有效内容)重定向到指定日志:

(tar zcvf - logs | openssl enc -e -aes256 -pass "pass:secretpass" -out test123.tgz.enc) > test123.log 2> test123_error.log

用括号将整个管道包裹为子shell,一次性重定向子shell的所有标准输出和错误输出。

方式二:分别重定向每个命令的错误输出

如果需要区分tar和openssl的错误/日志信息,可以单独重定向每个命令的标准错误:

tar zcvf - logs 2> tar_verbose.log | openssl enc -e -aes256 -pass "pass:secretpass" -out test123.tgz.enc 2> openssl_errors.log

这样tar的verbose信息会写入tar_verbose.log,openssl的错误信息会写入openssl_errors.log,由于openssl用-out指定了输出文件,标准输出无内容,可省略> test123.log(如果不需要空文件的话)。

补充说明

tar的-v选项输出属于标准错误而非标准输出,这是Unix工具的设计惯例——标准输出预留用于传递数据(如管道传输打包内容),状态、日志类信息则输出到标准错误。

内容的提问来源于stack exchange,提问作者Aliaxon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:24:32