![如果当前命令已通过 gzip 传送,如何将标准输出传送到文件](https://linux22.com/image/28401/%E5%A6%82%E6%9E%9C%E5%BD%93%E5%89%8D%E5%91%BD%E4%BB%A4%E5%B7%B2%E9%80%9A%E8%BF%87%20gzip%20%E4%BC%A0%E9%80%81%EF%BC%8C%E5%A6%82%E4%BD%95%E5%B0%86%E6%A0%87%E5%87%86%E8%BE%93%E5%87%BA%E4%BC%A0%E9%80%81%E5%88%B0%E6%96%87%E4%BB%B6.png)
所以我需要运行这个命令然后否认:
innobackupex-1.5.1 --user=root --password=**** --stream=tar ./ | gzip - > /data/myfile.tar.gz
如何将任何输出传送到文件?
在此命令末尾添加另一个 >> 只会附加 gzip 数据。
更具体; innobackupex 有进度输出 - 我希望将此输出附加/通过管道传输到文件(不仅仅是错误)。在这种情况下,由于 gzip 已经通过管道传输,执行此操作的正常方法(通过添加 >>)将不起作用
答案1
innobackupex
不会输出其进度stdout
,否则,它将最终出现在tar.gz
文件中。最有可能的是,它会将其输出到 stderr(快速浏览一下脚本似乎可以确认这一点),因此您需要做的是重定向其 stderr:
innobackupex ... 2>> progress.log | gzip > file.tar.gz
答案2
您的意思是从 innobackupex 捕获 STDERR 吗?你的问题不是很清楚。
innobackupex-1.5.1 --user=root --password=**** --stream=tar ./ 2> /path/to/file | gzip - > ...
答案3
我将通过在子 shell 中运行这些命令来完成此操作
( innobackupex-1.5.1 --user=root --password=**** --stream=tar ./ \
| gzip - > /data/myfile.tar.gz ) 2> errors
答案4
1)如果您的意思是,您想将输出通过管道传输到 gzip 进行压缩和常规文件,下面是一个用法示例tee
:
ls -a ~ | tee ls.txt - | grep "^\."
这将打印您的主目录中的所有“隐藏”点文件(因为 grep),但整个输出ls -a
将在 ls.txt 中。
请参阅man tee
以获得完整的解释。
2) 如果您的意思是要将标准错误流包含在标准输出流中,请附加2>&1
到命令中。