SSHFSを介してinotifyまたは名前付きパイプを使用する方法は?

SSHFSを介してinotifyまたは名前付きパイプを使用する方法は?

ありがとうsshfs魔法のように、リモートサーバーからホームディレクトリをマウントできます。

sshfs user@server:/home/user ~/remote

楽観的にはローカルネットワークを設定する必要があると思います。inotify- フックon(マウント~/remote/logFileから)ローカルプログラムがリモートログの変更に反応できるようにします。sshfs

cd ~/remote
touch logFile                                # create remote file
inotifywait logFile &                        # set up local inotify-hook
ssh user@server -x touch /home/user/logFile  # touch file from remote

何もしない。ファイルをローカルに保存inotifywaitしないと音は出ません。touch名前付きパイプへの書き込みも失敗します。

なぜこれですか?
このギャップをどのように埋めることができますか?

できるリモートで実行してinotifywaitファイルシステムを変更すると、シリアライゼーションポリシーが変更され、ローカルへの接続は維持されますが、基本的にSSHFSの再実装。抽象化を完全に削除します。

答え1

SSHFSファイルシステムは、以下に基づいて構築されました。SFTP規約。 SFTPは、「クラシック」方式でファイルを操作するためのツールのみを提供します。クライアントがサーバーに要求(ディレクトリのリスト、ファイルのアップロードなど)をすると、サーバーは応答します。サーバーがクライアントに何が起こったかを自発的に知らせるプロトコルには何もありません。

これにより、SSHFS内でinotifyなどの機能を提供することが不可能になりました。独自の拡張でSSHFSを拡張したり、完全なSSH接続で補完することは可能ですが、SSHFSへのそのような拡張は不明です。

同じ理由で、名前付きパイプはSSHFSの上に実装できません。従来のネットワークファイルシステムであるNFSには、システム全体で名前付きパイプをサポートする機能もありません。ネットワークファイルシステムでは、名前付きパイプはインストールされている各コンピュータ(サーバーを除く)に独立した通信ポイントを作成します。

パム(SGI IRIXのinotifyアナログがLinuxに移植されました。)ネットワーク経由で通知を送信できるデーモンを提供します。 Linuxはinotifyの出現以来、FAMをほとんど使用しないので、FAMを実行することが独自のアプリ固有の通知システムをローリングするよりも簡単かどうかはわかりません。 FAMおよびNFSへのネットワークリンクを保護するには、一部のポート転送を設定するか、SSH経由でVPNを設定する必要があります。

直接デプロイすることを選択した場合は、クライアントにシェルアクセスを提供することに同意すると仮定すると、クライアントの代わりにinotifyモニタを実行するのは非常に簡単です。クライアントはSSH接続を開き、inotifywaitサーバー上でコマンドを実行して解析します。クライアントから出力します。あなたはできます基本的な接続設定同じクライアントから同じサーバーへの複数の接続をすばやく開きます。

関連情報