Solución 1:
Si tiene la suerte de estar en una distribución basada en Debian, apt-get install dnotify
. Otras distribuciones probablemente tengan algo similar:busque el dnotify
nombre.
dnotify es un programa simple basado en la API dnotify de Linux kernel 2.4.19+. dnotify puede ejecutar un comando específico cada vez que cambia el contenido de un directorio específico. Se ejecuta desde la línea de comandos y toma dos argumentos:uno o más directorios para monitorear y un comando para ejecutar siempre que un directorio haya cambiado. Las opciones controlan qué eventos activar:cuándo se leyó un archivo en el directorio, cuándo se creó, eliminó, etc.
Si desea manejar esto dentro de su propio programa, dnotify también es la API que desea usar.
Solución 2:
Puede ejecutar un script con inotify-tools, algo como esto. Observará el directorio en busca de cambios en archivos modificados, archivos nuevos y archivos eliminados, luego ejecutará el script.
#!/bin/sh
while inotifywait -e modify -e create -e delete /home/me/code; do
rsync [options] /home/me/code/ /media/nfs/code/
done
Solución 3:
incron es básicamente lo que quieres, creo. Utiliza inotify como mecanismo de notificación (que, como han señalado otros, reemplaza a dnotify), pero no requiere un script que se ejecute continuamente, usando inotifywait o similar (aunque, obviamente, el demonio incron se ejecuta todo el tiempo). Los 'crontabs' de todo el sistema y los 'crontabs' de usuario son compatibles de manera similar al cron estándar, pero en lugar de especificar tiempos como activadores, se utilizan eventos de notificación y nombres de archivos/directorios.
incron está empaquetado para muchas distribuciones, incluidas Ubuntu y Debian, creo.