cron経由のrsync。ロギングを有効にするにはどうすればよいですか?


8

rsyncを使用してリモートサーバーを別のコンピューターにバックアップしています。

cron.dailyに次のファイルがあります。

rsync -avz -e ssh root@example.com:/ /mybackup/

ログインには公開鍵と秘密鍵のペアを使用します。これはほとんどの場合うまくいくようですが、私が毎日(毎日)変更することがわかっているいくつかの重要なファイル(MySQLダンプ)の日付を見て実際に確認したのは(愚かにも)だけです。明らかに、そのファイルの後にエラーが発生する可能性があります。

失敗することもあります。手動で実行すると、「クライアントリセット」などが発生することがあります。

完了したかどうかを確実に確認できるようにログを記録する最良の方法は何ですか?cronログはエラーを示しません。私は試していませんが、バックアップマシン上の旧バージョンのCentOSのrsync manページに--log-fileオプションが表示されません。>でstdoutをリダイレクトできると思いますが、すべてのファイルについて知りたくありません。私はそれがすべてうまくいったかどうか知りたいだけです。

ありがとう

回答:


13

あなたはすでにあなた自身の質問を解決したと思います。stdoutとstderrの両方をファイルにリダイレクトすると、すべてのファイルrsync転送の出力が得られません。これは、冗長(-v)モードで実行している場合にのみ生成されます。のデフォルトの動作でrsyncは、エラーが発生した場合にのみ出力が生成されます。だからあなたはこれをすることができます...

rsync ... > /var/log/rsync.log 2>&1

...そのファイルを調べて、最新のrsyncが成功したかどうかを確認します。私は明示的にを使用>していますが、実行するたびにログファイルが上書きされますrsync

rsync転送が失敗したときにゼロ以外のコードで終了するという事実を利用することもできるため、次のようにすることができます。

rsync ... || echo "rsync failed" | mail -s 'rsync falied' you@example.com

ありがとう。やってみます。ログにすべてのファイルが表示されると想定しました。詳細なしで手動で実行すると、画面に表示されるからです。郵便物はよさそうだ。
テトランズ、2011年

-vフラグなしでrsyncを手動で実行していても、ファイルごとの出力が表示される場合は、何か問題があります。rsyncのmanページには、「デフォルトでは、rsyncはサイレントで動作します。単一の-vで、転送されているファイルに関する情報と、最後に簡単な要約が表示されます。」
larsk、2011年

まあそれは間違いなく起こっていることです。-vはデフォルトでオンになっているようです。私はあなたが示唆するようにログのリダイレクトを行っただけで、ログにはすべてのファイルの行があります。私はあなたが間違っていると言っているのではありません。CentOSでは、rsyncのコンパイル方法が異なっている必要があります。/ procと/ sysの除外を追加しました。
テトランズ、2011年

CentOSを実行していますが、rsyncは説明どおりに動作します。コマンドラインは実際にはどのように見えますか?
larsk、2011年

1
ほら、あなたは冗長モードで走っています。あなたは-vそこにいます。
larsk、2011年

4

-vオプションを削除し、-qを追加します。これはエラーのみを与えます


1

多分あなたはloggerのコマンドでsyslogを使うことができます。

私はこのようにスクリプトを実行します:

rsync -v what user@host 2>&1 | logger -t backup

これは/var/log/messagesデフォルトでに書き込みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.