rsyncを使用して2つのディレクトリを同期するシェルスクリプトに関する質問があります。 rsyncコマンドの結果(成功の有無にかかわらず)をstatusというファイルに保存し、問題が発生するとstderr出力がerrorというファイルに追加されます。ただし、エラーファイルに実際のエラーより前のタイムスタンプを入力する方法が見つからないようです。
最後に、次のようなものが必要です。
if rsync source destination 2>> error # but I need to have the date before the actual error is appended!
then
echo "`date` - Success" >> status
else
echo "`date` - Failure" >> status
fi
また、以下を試しました。
(rsync source destination && echo "`date` - Success" >> status || echo "`date` - Failure" >> status) 2>>error
これを行う唯一の方法は、stderr出力を一時ファイルに保存し、タイムスタンプが入力された後に内容がエラーファイルに追加されるようにすることです。
ベストアンサー1
これを試してみましたか?
rsync -av blah blah 2>&1|perl -e "while(<>){s/^/`date` /g; print;}" >>logfile
行の先頭に日付とスペースが追加されます。