Supervisando el Sistema de Ficheros

Existe una utilidad que nos permite un control del sistema de ficheros llamada inotify cron (incron). Su funcionamiento es similar a Cron salvo que en lugar de actuar a una fecha, actúa a un cambio en un directorio. Con este demonio podremos:

  1. Reproducir un sonido cuando un fichero cambie.
  2. Recargar un servicio cuando el fichero de configuración cambie.
  3. Notificar a un usuario de que tiene nuevo correo.
  4. Vigilar cambios en ficheros críticos.
  5. Procesar los archivos subidos (ftp, …)

Para su funcionamiento tiene un archivo de acciones similar al de Cron con los siguientes eventos:

  • IN_ACCESS: Vigila si el archivo es accedido.
  • IN_MODIFY: Vigila si el archivo es modificado.
  • IN_ATTRIB: Vigila los cambios en los metadatos (permisos, atributos, fechas, …)
  • IN_CLOSE_WRITE: Cerrado un fichero de lectura/escritura.
  • IN_CLOSE_NOWRITE: Cerrado un archivo de sólo lectura.
  • IN_OPEN: Archivo abierto.
  • IN_MOVED_FROM: Se ha movido el fichero fuera del directorio vigilado.
  • IN_MOVED_TO: Se ha movido el fichero dentro del directorio vigilado.
  • IN_CREATE: Nuevo fichero/directorio creado dentro del directorio vigilado.
  • IN_DELETE: Fichero/directorio eliminado del directorio vigilado.
  • IN_DELETE_SELF: Supervisa si se elimina el directorio vigilado.
  • IN_CLOSE: Superivsa los eventos IN_CLOSE_WRITE e IN_CLOSE_NOWRITE
  • IN_MOVE: Supervisa los eventos IN_MOVED_FROM e IN_MOVED_TO
  • IN_ALL_EVENTS: Supervisa todos los eventos listados.
  • IN_DONT_FOLLOW: No sigue enlaces simbólicos.
  • IN_ONLYDIR: Supervisa el path únicamente si es un directorio.
  • IN_MOVE_SELF: Supervisa el borrado del fichero/directorio.

Para instalarlo:

# apt-get install incron

La configuración que viene por defecto es válida, sólo está comentada y tenemos que descomentarla, uno de los puntos es que editor usar para añadir las líneas de acciones. El fichero se encuentra en /etc/incron.conf. Para crear las tablas de acciones de usuario, hacemos al igual que cron y vamos a /var/spool/incron y creamos los fichero root y usuario, para que tanto root como nuestro usuario tengan acceso a incron. Después editamos el archivo /etc/incron.allow para añadir a root y a usuario.

La sintaxis del archivo de acciones es similar al de cron. Accedemos mediante.

$ incrontab -e

Y nos recibirá nuestro editor favorito. Escribimos las acciones que queremos de la forma:

/path/to/dir   EVENTO    ACCION

De forma que cada vez que ocurra el evento en la ruta responda con esa acción. Por ejemplo:

/home/ftp    IN_CREATE    enviarEmail.py
/etc/apache/httpd.conf    IN_MODIFY    apache2graceful

En la primera línea decimos que si alguien sube algo nuevo a nuestro servidor de ftp no avise con un correo electrónico. La segunda recarga nuestro servidor web cuando hemos hecho alguna modificación al archivo de configuración.

Otra cosa que tiene incron son los caracteres comodines, se utilizan para referenciar al path y/o al archivo/directorio que estamos tratando. Son los siguientes:

$$ - Símbolo del dólar.
$@ - El path del sistema de ficheros supervisado, esto es, el nombre del directorio si estamos vigilando un directorio.
$# - El nombre de fichero relativo al evento, esto es, el nombre relativo del ficheros si estamos vigilando un directorio. El path absoluto se obtiene con  $@/$#
$% - La señal de evento en texto.
$& - La señal de evento en número.

Fuentes:

http://www.linux.com/feature/144666

http://dailypackage.fedorabook.com/index.php?/archives/102-Productive-Monday-Incron-Execute-commands-based-on-filesystem-activity.html

This entry was posted in Linux and tagged , , , . Bookmark the permalink.

2 Responses to Supervisando el Sistema de Ficheros

  1. Muy buen artículo @nordri, muchas gracias por el “spam” en twitter 😉

  2. nordri says:

    @Informático se agradece compañero! 😀

Comments are closed.