Icono del sitio Binario 0

Script para Comprobar los Hashes de Archivos en una Carpeta y Guardarlos en un Archivo de Texto en Linux

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Artículos Guías Manuales Sistemas Linux Windows Binario 0

FacebookEmailWhatsAppLinkedInRedditXShare

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:

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

  1. 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.
  2. Especificar el algoritmo de hash:
    • En la variable $algorithm, puedes elegir entre varios algoritmos de hash, como md5sum, sha1sum o sha256sum. Este script usa sha256sum por defecto, pero puedes cambiarlo si lo deseas.
  3. Obtener los archivos:
    • El comando find "$folderPath" -type f obtiene todos los archivos de la carpeta especificada de manera recursiva.
  4. 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).
  5. 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.
  6. 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

  1. 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
  2. Pegar el código:
    • Copia y pega el código del script en el archivo que acabas de crear.
  3. 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
  4. Ejecutar el script:
    • Ejecuta el script con el siguiente comando:

      ./verificar_hashes.sh

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.

Salir de la versión móvil