
共有ディレクトリがあります/path/to/dir
。そのディレクトリでバックアップ プロセスを実行しています。プロセスはサーバー A で実行されていますが、アクセスできるのはサーバー B のみです。そのため、サーバー A でバックアップ プロセスが完了すると、共有ディレクトリにデータが格納され、/path/to/dir
サーバー B でも使用できるようになります。
現在、バックアップ プロセスが完了したときにのみ実行される bash スクリプトがサーバー B にあります。他のサーバーにアクセスできないため、次のことを考えていました。
バックアップ プロセスによってまだ使用されているかどうかを確認し/path/to/dir
、ディレクトリでプロセスが実行されていない場合にのみスクリプトを実行することはできますか?
それが共有ディレクトリ (NFS) であることを知ることが重要かどうかはわかりません。
答え1
より良い解決策: ジョブの実行中にのみ存在し、ジョブが完了するとサーバー A で削除されるロックファイルを共有上に作成します。
サーバー B では、このファイルが存在するかどうかを確認し、存在する場合はファイルがなくなるまで待機します。
答え2
作成アプリAを設定して、ファイルを作成し、example_output.tar.gz.part
すべてが完了したことを確認した後にのみ、名前を変更します。example_output.tar.gz
消費アプリBを設定して、*.part
ファイルを無視し、一致しないすべてのファイルを処理する*.part
このスキームは、多くの消費者向けアプリケーション (Web ブラウザーや SCP クライアントなど) で使用されているため、認識しやすいものです。
この方法では、ロックファイルは必要なく、複数のコンシューマーを持つことができます。アプリケーションが停止した後 (またはサーバーが再起動した後) に古いロックファイルが残っていると、ロックファイルは常に潜在的な障害の原因となります。