失敗する可能性のあるバックアップコマンドの標準出力を処理する最もUnixに似た方法は何ですか?

失敗する可能性のあるバックアップコマンドの標準出力を処理する最もUnixに似た方法は何ですか?

私は、リモートサーバー上のデータをバックアップし、それを標準出力に出力するLinux上で実行される(Pythonで書かれた)ユーティリティ/スクリプトを作成しています。現在私は cron でこのスクリプトを定時に実行し、出力を次のファイルにリダイレクトします。

./mybackupscript > ~/backups/mybackupファイル

時々バックアップは失敗します(たとえば、ネットワーク接続が中断されたり、リモートサーバーのタイムアウト)。これは、標準出力コンテンツが不完全または欠落していることを意味します。ユーティリティはうまく動作します。これが発生すると、ゼロ以外の終了コードで終了します。ただし、現在のバックアップファイルはまだ空であるか不完全です。私はそれが元のコンテンツ(私のスクリプトの最後の成功した実行から)を維持したいと思います。

バックアップをより強力にするためにこの問題を処理する最も適切な「Unix-y」方法は何ですか?バックアップが有効な場合にのみ一時ファイルに出力してから、最終ファイルにコピーする必要がありますか?

ベストアンサー1

バックアップが有効な場合にのみ一時ファイルに出力してから、最終ファイルにコピーする必要がありますか?

コピーせずに名前を変更します。

しかし、バックアップスクリプトがstdout。これは外部で行う必要があります。

if ./script.sh >backup.tmp; then
  mv backup.tmp backup
else
  rm backup.tmp
fi

おすすめ記事