所以我需要运行这个命令然后否认:
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
到命令中。