Solution 1 :
Si vous avez la chance d'être sur une distribution basée sur Debian, apt-get install dnotify
. D'autres distributions ont probablement quelque chose de similaire - recherchez le dnotify
nom.
dnotify est un programme simple basé sur l'API dnotify du noyau Linux 2.4.19+. dnotify peut exécuter une commande spécifiée chaque fois que le contenu d'un répertoire spécifique change. Il est exécuté à partir de la ligne de commande et prend deux arguments :un ou plusieurs répertoires à surveiller et une commande à exécuter chaque fois qu'un répertoire a changé. Les options contrôlent les événements à déclencher :lorsqu'un fichier a été lu dans le répertoire, lorsqu'il a été créé, supprimé, etc.
Si vous souhaitez gérer cela dans votre propre programme, dnotify est également l'API que vous souhaitez utiliser.
Solution 2 :
Vous pouvez exécuter un script avec les outils inotify, quelque chose comme ça. Il surveillera le répertoire pour les changements dans les fichiers modifiés, les nouveaux fichiers et les fichiers supprimés, puis il exécutera le script.
#!/bin/sh
while inotifywait -e modify -e create -e delete /home/me/code; do
rsync [options] /home/me/code/ /media/nfs/code/
done
Solution 3 :
incron est essentiellement ce que vous voulez, je pense. Il utilise inotify comme mécanisme de notification (qui, comme d'autres l'ont souligné, remplace dnotify), mais ne nécessite pas de script qui s'exécute en continu, en utilisant inotifywait ou similaire (bien que, évidemment, le démon incron tourne tout le temps). Les « crontabs » à l'échelle du système et les « crontabs » utilisateur sont pris en charge de la même manière que le cron standard, mais plutôt que de spécifier des heures comme déclencheurs, des événements inotify et des noms de fichiers/répertoires sont utilisés.
incron est empaqueté pour de nombreuses distributions, y compris Ubuntu et Debian, je crois.