Merci la sshfs
magie, je peux monter mon répertoire personnel à partir d'un serveur distant avec
sshfs user@server:/home/user ~/remote
Optimiste, je pensais que je serais mis local inotify
-hook sur ~/remote/logFile
(dans le sshfs
montage) donc un programme local peut réagir aux changements de journaux à distance.
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
Rien ne se passe . inotifywait
est silencieux, sauf si je touch
le fichier localement. L'écriture dans un canal nommé échoue de la même manière.
Pourquoi est-ce?
Comment puis-je combler cet écart?
Je pourrais exécuter inotifywait
sur la télécommande, pirater une stratégie de sérialisation de changement de système de fichiers et maintenir une connexion au local, mais je réimplémente essentiellement SSHFS . Et cela tue complètement l'abstraction.
inotify
sur le système local de détecter les changements sur un système de fichiers distant. Le noyau local est hors de la boucle dans ces changements. Vous devez exécuterinotifywait
sur le serveur, pas sur le client.Réponses:
Le système de fichiers SSHFS est construit au-dessus du protocole SFTP . SFTP fournit uniquement des fonctionnalités pour manipuler les fichiers de manière «classique»; le client fait une demande au serveur (lister un répertoire, télécharger un fichier, etc.), et le serveur répond. Il n'y a aucune facilité dans ce protocole pour que le serveur informe spontanément le client que quelque chose s'est produit.
Il est donc impossible de fournir une fonctionnalité telle que inotify dans SSHFS. Il serait possible d'étendre SSHFS avec des extensions propriétaires, ou de le compléter avec une connexion SSH à part entière; mais je ne connais pas une telle extension à SSHFS.
Les canaux nommés ne peuvent pas être implémentés au-dessus de SSHFS pour la même raison. NFS, le système de fichiers en réseau classique, n'a pas non plus la possibilité de prendre en charge les canaux nommés inter-machines. Sur un système de fichiers en réseau, un canal nommé crée un point de communication indépendant sur chacune des machines où il est monté (en plus du serveur).
FAM (l'analogue inotify dans SGI IRIX, qui a été porté sur Linux) fournit un démon qui permet d'envoyer des notifications sur le réseau. Linux a plutôt déprécié FAM depuis que inotify est entré en scène, donc je ne sais pas si faire fonctionner FAM serait plus facile que de lancer votre propre système de notification spécifique à l'application. Vous devez configurer une redirection de port via SSH ou établir un VPN afin de sécuriser la liaison réseau pour FAM et NFS.
Si vous choisissez de lancer le vôtre, en supposant que vous êtes d'accord pour donner l'accès au shell des clients, il est assez facile d'exécuter un moniteur inotify au nom d'un client: demandez au client d'ouvrir une connexion SSH et exécutez la
inotifywait
commande sur le serveur , en analysant sa sortie sur le client. Vous pouvez configurer une connexion principale pour accélérer l'ouverture de nombreuses connexions du même client au même serveur.la source