Je peux synchroniser des dossiers avec rsync -avz /directory /target
, maintenant je souhaite le faire si j'ai changé un fichier dans /directory
donc rsync
devrait être appelé automatiquement.
J'utilise Virtual Box et le dossier partagé de Virtual Box est vraiment lent, surtout si vous avez une page Web qui utilise le dossier partagé comme racine du document. Avec rsync
je serais en mesure de travailler avec mes fichiers locaux sur un dossier partagé et de le synchroniser automatiquement avec la racine du document.
J'espère que quelqu'un a une idée de comment faire, ce crontab
ne serait pas bien, car il est exécuté toutes les x minutes, donc si je ne fais rien, il appellera toujours rsync
mais pas si j'ai modifié mon fichier.
Meilleures salutations
la source
inotifywait
solution présente un inconvénient léger mais important: elle ne détecte pas les changements survenus lors de l'rsync
exécution. Considérez la situation suivante: le fichier A est modifié; rsync est déclenché; lorsque rsync a presque terminé la synchronisation du fichier A, le fichier B est modifié. Maintenant,rsync
terminé et eninotifywait
cours d'exécution, mais le fichier B n'est pas synchronisé et ne sera pas synchronisé jusqu'à la prochaine modification. Pensez à utiliserlsyncd
comme suggéré par @Arigion.Vous pouvez utiliser Lsyncd (démon de synchronisation en direct) :
Voici par exemple un tutoriel pour Ubuntu 16.04 .
la source
Vous pouvez utiliser
inotifywait
etrsync
.inotifywait
avec l'événementmodify,create,delete
activé. De cette façon, vous ne synchroniserez avec votre serveur que lorsque le fichier change, sinon il se synchronisera chaque fois qu'un fichier est lu (les éditeurs lisent plusieurs fois votre fichier pour vérifier s'il y a des changements). Ainsi dit:la source
lsyncd
comme suggéré par @Arigion.En développant légèrement un commentaire sur la réponse acceptée, j'ai réussi à utiliser fswatch pour déclencher un
scp
des fichiers modifiés sur l'invité. Sous Linux, il s'agit d'un wrapper,inotify
mais il est également multiplateforme (je suis sur un Mac avec un invité QEMU basé sur Arm). J'ai également cloué sur unessh
construction à distance. L'approche push fonctionne bien avec des actions dont le comportement n'est pas idéal.la source