Une solution rapide et pratique à cette question qui est portable sur toutes les plates-formes UNIX (non spécifique à OSX, mais utilisable sous HP-UX, Solaris, Linux, etc.) consiste à appeler rsync à partir de la crontab de l'utilisateur, et à laisser la logique de synchronisation des dossiers de rsync déterminer elle-même si le dossier a été modifié ou non. Un raffinement dans l'utilisation de cette méthode consiste à appeler rsync depuis la crontab de l'utilisateur. solution portable est d'entourer l'appel à rsync d'un test de date entre un fichier touché (en fait son heure de modification) et l'heure de modification du dossier à synchroniser, mais cela n'est pas nécessaire à moins que les dossiers à synchroniser ne soient très grands (profonds et/ou larges). Un dossier unique avec plusieurs sous-dossiers est idéal pour cette solution.
Une entrée pour la crontab qui exécutera le cas "rapide et sale" à un intervalle d'interrogation d'une minute est la suivante :
# run sync every minute:
* * * * * /usr/bin/rsync -avz $HOME/source_path $HOME/target/path 1>> $HOME/.my_sync.log 2>&1
Cela devrait suffire pour le cas rapide et sale - en d'autres termes, les dossiers seront mis à jour dans la minute qui suit la modification. Vérifiez le fichier ~/.my_sync.log pour les statuts d'exécution - ce fichier va croître sans limites avec le temps, donc une fois que l'opération correcte a été déterminée, remplacez ">>" par ">" pour au moins enregistrer le statut le plus récent de rsync.
Un autre point est que le commutateur -z de rsync doit être utilisé lors de la synchronisation sur un réseau. L'option -z permet d'utiliser la compression pour les transferts de fichiers sur le réseau. Lorsque vous utilisez rsync pour synchroniser des dossiers sur des systèmes de fichiers locaux à un serveur, le commutateur -z peut généralement être omis.
Note sur l'utilisation de la crontab :
Si vous ne pouvez pas éditer votre crontab avec :
$ crontab -e
Ensuite, vous devrez vous donner la permission d'avoir une crontab. Voir la page de manuel de crontab. Sous OSX, c'est ce qu'il faut faire - le changement est légèrement différent sur les systèmes linux : En résumé, assurez-vous que votre nom d'utilisateur se trouve dans /usr/lib/cron/cron.allow ou que /usr/lib/cron/cron.allow n'existe pas. Assurez-vous également que votre nom d'utilisateur n'est pas dans /usr/lib/cron/cron.deny.