15 de Octubre, 2004

md5 recursivo

Si queremos verificar la integridad de un árbol de directorios de forma recursiva, es decir, que se analicen los ficheros del directorio indicado así como los posibles ficheros de sus subdirectorios y los subdirectorios de estos, etc.; normalmente la herramienta que acompaña al sistema no nos permite hacerlo.

Es razonable que siga la filosofía UNIX: herramientas que hacen solo una cosa, pero la hacen bien. Para eso tenemos otros comandos UNIX, para aumentar la funcionalidad mediante pipes y redirecciones.

Mi propuesta es sencilla:

DIR="/path/al/directorio"
find $DIR/* -type f -print0 | xargs -0 -n 1 md5 >> $DIR.MD5

Donde $DIR será el directorio a analizar.

find mostrará todos los ficheros tipo 'fichero' acabados en NULL. Esto del NULL se hace para que se procesen adecuadamente nombres de fichero con espacios y tal (nunca habrá un NULL en un nombre de fichero, tiene sentido).

find muestra un nombre de fichero por linea en la salida estándar. Cada una de esas lineas acabada en NULL (lo indicamos con el -0) es recogida por xargs (solo una por el -n 1) y ejecutamos md5 con ese valor como argumento.

Finalmente se van añadiendo las salidas de md5 a $DIR.MD5.

Si posteriormente queremos comprobar la integridad solo tendremos que hacer:

$ md5 -c directorio.MD5

Dependiendo de la herramienta de la que dispongamos en nuestro sistema la opción -c fichero podría variar, pero por ahora en todos los sistemas libres que uso funciona muy parecido.

Anotación por Juan J. Martínez.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.