/usr/local/bin/backup
1時間ごとに呼び出されるスクリプトでは、/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
。