現在のコマンドがgzipを介してパイプされている場合の標準出力をファイルにパイプする方法

現在のコマンドがgzipを介してパイプされている場合の標準出力をファイルにパイプする方法

したがって、このコマンドを実行して拒否する必要があります。

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

サブシェルで次のコマンドを実行してこれを行います。

( 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 -als.txtに保存されます。

man tee完全な説明についてはを参照してください。

2) 標準出力ストリームに標準エラーストリームを含めたい場合は、2>&1コマンドに追加します。

関連情報