86 votes

Linux : Synchroniser les fichiers en continu, d'une seule manière

Scénario : Un IDE est installé sur un poste de travail Linux, pour éditer les fichiers PHP localement. Chaque fois que je sauvegarde un fichier, je veux que ce changement apparaisse sur le serveur linux où Apache tourne. Le serveur possède ssh (ainsi que samba et nfs).

À titre de référence, lorsque j'éditais des fichiers sous Windows, j'ai fini par trouver en WinSCP l'outil exact dont j'avais besoin - WinSCP possède justement cette fonctionnalité, avec une synchronisation initiale puis une mise à jour continue, en utilisant le service de surveillance du système de fichiers : "Keep Remote Directory up to Date".

Sous Linux, on pourrait argumenter que sshfs pourrait être utilisé pour contourner complètement le besoin de synchronisation. Sous Windows, un partage samba ferait la même chose. Cependant, je veux que l'IDE fonctionne avec des fichiers locaux (sur un disque SSD !), sans avoir à passer par le réseau pour faire l'indexation PHP et autres, ce qui prend du temps.

Mais sshfs pourrait néanmoins faire partie de la solution - de sorte que la synchronisation continue ne doive être effectuée qu'entre deux répertoires locaux.

Des idées ou des conseils ?

0voto

Mikko Rantalainen Points 614

Une autre option : https://github.com/mikkorantalainen/rsync-continuous

Ce script utilise bash , inotifywait et rsync sur ssh pour créer une synchronisation unidirectionnelle très rapide car seuls les fichiers modifiés doivent être transférés et si une partie seulement du fichier a été modifiée, rsync ne transférera que la partie modifiée.

Si vous exécutez mkdir -p ~/.ssh/connections et ajoutez ce qui suit au début de ~/.ssh/config les performances seront bien meilleures :

ControlMaster auto
ControlPath   ~/.ssh/connections/%r@%h:%p
ControlPersist 1

Notez que la configuration ci-dessus entraîne une sortie supplémentaire à chaque fois que vous quittez une connexion ssh en raison d'un bug. https://bugzilla.mindrot.org/show_bug.cgi?id=3220

Si vous maintenez une connexion ssh ouverte à l'hôte distant utilisé avec le script ci-dessus, les fichiers devraient être synchronisés avec un délai d'environ 100 ms.

-2voto

Dragos Points 1329

Une approche beaucoup plus simple :

Exportez votre /var/www avec samba (ou nfs) et travaillez sur les fichiers directement sur le serveur.

Autre solution : la plupart des IDE permettent de configurer le déploiement de différentes manières. qui vous convient.

Ou mettre en place un système de gestion du code source comme Git, Bazaar, etc.

Bonne chance !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X