バックアップが同時に実行されないようにする

バックアップが同時に実行されないようにする

/usr/local/bin/backup1時間ごとに呼び出されるスクリプトでは、/etc/crontab次のものを使用します。同期外部サーバーにデータをコピーします。これらすべては、1時間以内にプッシュできるよりも多くの新しいデータがある場合でもうまく機能します。

先週、誰かがデータパーティションに11 GBのファイルをコピーしました。各プログラムには帯域幅がなく、おそらく同じ大容量ファイルで作業しています。私はそれらをすべて殺し(最初のものを実行する必要があることに気づく前に)、cronジョブを停止し、バックアップスクリプトを手動で実行しました。

rsyncを起動する前に、スクリプトにファイルを作成し、ファイルがすでに存在することを確認して、バックアップが並行して実行されるのを防ぎます。より簡単な方法がありますか?

私の/etc/crontabアイテム:

5  *  *  *  *   root  /usr/local/bin/backup

ベストアンサー1

方法はさまざまですが、最も簡単な方法は挿入することだと思います。グループcrontabファイルのコマンドの前に:

5  *  *  *  *   root  flock -n /var/lock/backup /usr/local/bin/backup

この/var/lock/backupファイルはクラスターによって使用されるロックで、-nロックがすでに存在する場合、コマンドはすぐに失敗します。

もちろん、これは1回のバックアップに1時間1分かかる場合、次のバックアップは59分後に開始されることを意味します。これが問題ならば-x

おすすめ記事