La verificación de la integridad de archivos en Linux se puede realizar fácilmente utilizando comandos de la terminal. Si tienes una carpeta llena de archivos y deseas verificar sus hashes (por ejemplo, MD5, SHA1 o SHA256) y guardar los resultados en un archivo de texto, un script de shell puede automatizar este proceso de manera eficiente. En este artículo, te proporcionamos un script en bash para lograrlo.
1. ¿Qué Hace Este Script?
Este script en bash recorre todos los archivos dentro de una carpeta específica, calcula el hash de cada archivo usando un algoritmo de tu elección (como MD5, SHA-1 o SHA-256), y guarda los resultados en un archivo de texto. Es útil para verificar la integridad de archivos en directorios grandes.
2. Requisitos
Para ejecutar este script, necesitarás:
- Un sistema Linux con bash.
- Herramientas estándar como
md5sum
,sha1sum
osha256sum
instaladas (estas herramientas suelen estar preinstaladas en la mayoría de las distribuciones de Linux).
3. El Script en Bash
A continuación, te proporcionamos el script completo en bash:
#!/bin/bash
# Ruta de la carpeta que contiene los archivos que deseas verificar
folderPath="/ruta/a/tu/carpeta"
# Ruta y nombre del archivo de salida donde se guardarán los resultados
outputFile="/ruta/a/tu/archivo_salida.txt"
# Algoritmo de hash que deseas usar (md5sum, sha1sum, sha256sum)
algorithm="sha256sum"
# Obtener todos los archivos en la carpeta
files=$(find "$folderPath" -type f)
# Iniciar o limpiar el archivo de salida
echo "Verificación de hashes - Algoritmo: $algorithm" > "$outputFile"
echo "Fecha de la verificación: $(date)" >> "$outputFile"
echo "" >> "$outputFile"
echo "Archivo, Hash" >> "$outputFile"
# Calcular y escribir el hash de cada archivo
for file in $files; do
# Calcular el hash usando el algoritmo especificado
hash=$($algorithm "$file" | awk '{ print $1 }')
# Escribir el nombre del archivo y su hash en el archivo de salida
echo "$file, $hash" >> "$outputFile"
done
echo "Verificación completada. Los resultados se han guardado en: $outputFile"
4. Explicación del Script
- Definir la ruta de la carpeta y el archivo de salida:
- La variable
$folderPath
debe contener la ruta de la carpeta donde se encuentran los archivos que deseas verificar. Modifica esta variable con la ubicación de tu carpeta. - La variable
$outputFile
es el archivo de texto donde se guardarán los resultados de la verificación.
- La variable
- Especificar el algoritmo de hash:
- En la variable
$algorithm
, puedes elegir entre varios algoritmos de hash, comomd5sum
,sha1sum
osha256sum
. Este script usasha256sum
por defecto, pero puedes cambiarlo si lo deseas.
- En la variable
- Obtener los archivos:
- El comando
find "$folderPath" -type f
obtiene todos los archivos de la carpeta especificada de manera recursiva.
- El comando
- Calcular el hash de cada archivo:
- El comando
$($algorithm "$file" | awk '{ print $1 }')
calcula el hash del archivo y extrae solo la parte del hash (ignorando el nombre del archivo que normalmente aparece después del hash).
- El comando
- Guardar los resultados en un archivo de texto:
- Los resultados, que incluyen el nombre del archivo y su hash, se guardan en el archivo especificado en
$outputFile
.
- Los resultados, que incluyen el nombre del archivo y su hash, se guardan en el archivo especificado en
- Encabezado del archivo de salida:
- El archivo de texto incluirá un encabezado que especifica el algoritmo utilizado y la fecha de la verificación, para que sea fácil de leer y entender.
5. Ejecutar el Script
- Crear el archivo del script:
- Abre tu terminal y crea un archivo con extensión
.sh
, por ejemplo,verificar_hashes.sh
:nano verificar_hashes.sh
- Abre tu terminal y crea un archivo con extensión
- Pegar el código:
- Copia y pega el código del script en el archivo que acabas de crear.
- Copia y pega el código del script en el archivo que acabas de crear.
- Dar permisos de ejecución:
- Antes de ejecutar el script, debes asegurarte de que tiene permisos de ejecución. Usa el siguiente comando para otorgar permisos:
chmod +x verificar_hashes.sh
- Antes de ejecutar el script, debes asegurarte de que tiene permisos de ejecución. Usa el siguiente comando para otorgar permisos:
- Ejecutar el script:
- Ejecuta el script con el siguiente comando:
./verificar_hashes.sh
- Ejecuta el script con el siguiente comando:
6. Resultado Esperado
Al finalizar la ejecución del script, el archivo de texto especificado ($outputFile
) contendrá el siguiente formato:
Verificación de hashes - Algoritmo: sha256sum
Fecha de la verificación: Mié Nov 14 10:30:00 UTC 2024
Archivo, Hash
/ruta/a/tu/carpeta/archivo1.txt, 5e884898da28047151d0e56f8dc6292773603d0d1c7c5c02f2a15ab8a29e1d73
/ruta/a/tu/carpeta/archivo2.zip, d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2
...
Cada línea contiene el nombre del archivo y su hash correspondiente.
7. Conclusión
Este script en bash te permite verificar rápidamente los hashes de todos los archivos en una carpeta en Linux y guardar los resultados en un archivo de texto. Es útil para mantener la integridad de los archivos, detectar modificaciones o corrupciones, y hacer un seguimiento detallado de los hashes a lo largo del tiempo.