Scénario: Un environnement de développement intégré est configuré sur un ordinateur de bureau Linux, modifiant les fichiers PHP localement. Chaque fois que j'enregistre un fichier, je souhaite que cette modification apparaisse sur le serveur Linux sur lequel Apache est exécuté. Le serveur a ssh (et samba et nfs d'ailleurs).
En guise de référence, lorsque j’ai édité des fichiers sous Windows, j’ai finalement adopté WinSCP comme étant l’outil exact dont j'avais besoin - WinSCP ne présente que cette fonctionnalité, avec une synchronisation initiale puis une mise à jour continue, à l’aide du service de surveillance du système de fichiers: Date".
Sous Linux, on pourrait argumenter que sshfs pourrait être utilisé pour éviter complètement le besoin de synchronisation. Sous Windows, un partage Samba ferait de même. Cependant, je veux que l'EDI fonctionne avec des fichiers locaux (sur un disque SSD!), Sans avoir à passer par le réseau pour indexer PHP et autres, ce qui prend beaucoup de temps.
Mais sshfs pourrait néanmoins faire partie de la solution - de sorte que la synchronisation continue devait simplement être effectuée entre deux répertoires locaux.
Des idées ou des pointeurs?
Réponses:
Vous pouvez également utiliser
inotifywait
le package inotify-tools.la source
rsync
/scp
a un retard gênant lors de l’établissement de la connexion ssh.Lsyncd serait une bonne solution pour cela.
En bout de ligne, il utilise le même type d’outils pour effectuer le travail (inotify et rsync) que celui suggéré par d’autres réponses, mais il est plus facile à configurer pour ceux qui ne sont pas familiarisés avec les scripts shell.
la source
J'ai beaucoup besoin de cela car mon code doit fonctionner sur des boîtes distantes et j'écris du code sur une machine locale. J'ai trouvé un bon outil que vous pouvez utiliser pour surveiller en permanence vos dossiers locaux et les synchroniser avec un dossier distant ou local: https://github.com/axkibe/lsyncd
Une commande simple pour synchroniser en continu un répertoire local avec une machine distante via ssh sera:
Comme pour toute autre commande rsync, assurez-vous de bien définir le chemin du dossier et vérifiez avant d'exécuter la commande. J'avais presque tué l'un de mes ordinateurs distants parce que je n'avais pas réussi à donner un répertoire de destination correct. Assurez-vous de ne pas manquer le chemin distant et n'utilisez pas '/' sauf si vous savez ce que vous faites.
la source
Si vous devez observer le système de fichiers, alors inotify est le moyen de le faire. J'écrirais un script python simple en utilisant pyinotify pour effectuer la synchronisation lorsque le système de fichiers est modifié. Voir la documentation . Vous pouvez également consulter le fichier autosync.py pour vous inspirer. S'amuser.
la source
Ce que j’ai fait une fois, c’est qu’un script bash s’exécute
ls -l
en boucle (avec un peu de sommeil) et se compare au résultat précédent. Si cela a changé, faites votre synchronisation.Démarrez ce script dans un nouveau terminal avec les noms de fichiers comme arguments (après avoir mis votre outil de synchronisation).
(Je l'ai utilisé pour démarrer une compilation, pas pour synchroniser, mais cela fonctionnerait de la même manière.)
la source
Approche beaucoup plus simple:
Exportez votre / var / www avec samba (ou nfs) et travaillez sur les fichiers directement sur le serveur.
Une autre solution: la plupart des IDE autorisent différentes configurations de déploiement - vérifiez s’il en existe une qui vous convient.
Ou définissez un système de gestion de code source comme Git, Bazaar, etc.
Bonne chance !!
la source