sudo: Jack of all trades, master of some

Automatizar tareas eficientemente con inotifywait

Comentarios desactivados en Automatizar tareas eficientemente con inotifywait

Recientemente junto a un colega buscamos la forma de generar un MD5 cuando se creara un nuevo archivo en cierto directorio. Después de tantos ‘inventos’ y pruebas infructuosas apareció en los resultados de búsquedas de Google lo que tanto buscaba: inotifywait.

inotifywait espera que ocurran cambios en archivos usando la interface de inotify de Linux. Se puede utilizar para ejecutar comandos o scripts al ocurrir eventos en archivos y puede detenerse una vez que un evento ocurra o ejecutarse continuamente y mostrar los eventos mientras ocurren.

En la situación que teníamos la solución fue esta:

#!/bin/bash

DIR="/var/ftp/isos"

inotifywait -m --format %w%f -e create ${DIR} | while read "FILE"
do
	cd ${DIR}
	md5sum $(basename "${FILE}") >> md5sums
done

Este script obtiene la salida de inotifywait y la pasa al ciclo while que genera la suma MD5 del archivo que se cree en el directorio /var/ftp/isos.

Donde:

De esta manera nos evitamos hacer uso excesivo de recursos como CPU al ejecutar constantemente una entrada de cron.

Nota: Para más información relacionada recomiendo leer el man. Sí, es más sencillo que se suban los archivos con sus repectivas sumas md5, don’t blame me!