複数のクライアントが読み書きするリモートサーバーに共有キャッシュがあるため、このキャッシュへのアクセスを同期する必要があります。私の考えに私はできます:
- リモートでSSH経由でサーバーにクラスタをインポートします。
- サーバーへの更新のプッシュ (rsync)
- 群れを解放する
Flock自体は機能しますが、すべてが機能するには、クライアントがキャッシュを更新している間にロックを取得して保持できるプロセスをリモートで開始する方法が必要です。その後、クライアントとの接続が切断されたら、3からクライアントからクラスターを解放する必要があります。これを達成する方法についてのアイデアはありますか?
注:現在の設定では、サーバーがクライアントに接続してSSHを介して更新を「インポートする」ことができないため、リモートで実行される単一のスクリプトですべてを処理できます。
答え1
私のソリューションを共有しましょう。
rsync -r --rsync-path="flock $dst/lockfile rsync" $src/ $server:$dst
したがって、rsyncサーバーを起動する前に--rsync-pathを使用してリモートロックを取得します。複数のクライアントが同時にこれを実行している場合は、rsyncを実行する前にファイルロックが利用可能になるまで待つ必要があります。