Calcular la suma de comprobación MD5 de un directorio
29
Estoy buscando una forma rápida de comparar el contenido del directorio. ¿Es posible hacer una suma de md5 (o suma de verificación equivalente) de un directorio completo?
@Kibbee Para evitar eso, debe tener en cuenta algo que no sea el contenido de datos de cada archivo y exactamente cómo suma los archivos. Dado: [sumas de verificación] 1. A (Directorio) - Archivo1 [ABC] - Archivo2 [CBA] 2. B (Directorio) - Archivo1 [ABC] - B1 (Directorio) - Archivo2 [CBA] 3. C (Directorio) - Archivo4 [ABC] - Archivo5 [CBA] 4. D (Directorio) - Archivo1 copia [ABC] - Archivo2 copia [CBA] El directorio A y B no son idénticos aunque contienen los mismos archivos (aunque en B1 , el archivo2 está en un subdirectorio) . Según su ejemplo, A y C se considerarían idénticos porque
Jacob Lyles
Respuestas:
36
Seguro - md5sum directory/*
Si necesita algo un poco más flexible (por ejemplo, para la recurrencia del directorio o la comparación de hash), intente con md5deep.
apt-get install md5deep
md5deep -r directory
Para comparar una estructura de directorio, puede darle una lista de hashes para comparar:
No es lo que quise decir, sino lo que quería :) Quise decir de forma recursiva y obtener UN hash al final, pero creo que esto se puede hacer con md5deep -l y el hash de la salida en sí.
pez globo
1
El orden del hash no es coherente, por lo que tendría que ordenar la salida antes del hash
pez globo
1
Para obtener un orden determinista, utilice el -j0que deshabilita el subprocesamiento múltiple (consulte la página del manual)
Johann
1
@ ShaneMadden ♦ Instalé md5deepcon sudo apt-get install md5deepencendido Ubuntu 16.04pero cuando intenté leer la página de manual me dice que> No hay entrada manual para md5deep
Kasun Siyambalapitiya
27
Si desea ver qué es diferente (en todo caso) entre dos directorios, rsync sería una buena opción.
la idea es que hash todos los archivos corten los hash uno por línea, los clasifique y el hash produzca un solo hash. Esto no depende de los nombres de los archivos.
Puede crear sumas MD5 de cada archivo, ordenar estas sumas de verificación alfabéticamente y tenerlas (con o sin líneas nuevas). Dado que MD5 es criptográfico, debería funcionar bien con hashes de hashes.
Debe haber un cierto orden de cosas, de lo contrario obtendrá resultados diferentes para directorios iguales.
Y debe tener en cuenta que la adición de algún archivo a una dir cambiará por completo el resultado, incluso si era sólo una .directoryde .DS_Storearchivo.
Técnicamente, uno podría obtener el mismo hash para diferentes directorios. Si el directorio A tenía 2 archivos con los contenidos 'ab' y 'c' y el directorio B tenía 2 archivos con el contenido 'a' y 'bc', entonces el hash solo los datos en los archivos producirían los mismos resultados, aunque tengan archivos con diferentes contenidos Ni siquiera estoy seguro de cómo se definiría el MD5Sum de un directorio.
Kibbee
1
Como un caso específico, supongamos que desea copiar algunos archivos del directorio1 al directorio2 y luego desea verificar una copia exitosa utilizando una comparación md5.
Primero. cd al directorio1 y escriba:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
que creará un archivo de referencia que contiene una suma md5 para cada archivo en el directorio1. Una vez hecho esto, todo lo que tiene que hacer es cd al directorio2 y escribir:
md5sum -c ~/Desktop/md5sum.txt
El programa md5sum obtiene cada ruta del archivo md5sum.txt, calcula el md5sum de ese archivo en la carpeta de destino y luego lo compara con la suma que ha almacenado en el archivo.
Una vez que se complete el proceso, obtendrá un resumen como 'Algunos archivos no coincidieron' o algo así.
He tenido la necesidad de verificar la integridad de las copias de seguridad / réplicas que contienen una gran cantidad de archivos y terminé escribiendo un programa de línea de comandos llamado MassHash. Está escrito en Python. Un lanzador GTK + también está disponible. Es posible que desee verlo ...
Respuestas:
Seguro -
md5sum directory/*
Si necesita algo un poco más flexible (por ejemplo, para la recurrencia del directorio o la comparación de hash), intente con md5deep.
Para comparar una estructura de directorio, puede darle una lista de hashes para comparar:
Esto generará todos los archivos en el directorio2 que no coinciden con el directorio1.
Esto no mostrará archivos que se hayan eliminado del directorio1 o archivos que se hayan agregado al directorio2.
fuente
-j0
que deshabilita el subprocesamiento múltiple (consulte la página del manual)md5deep
consudo apt-get install md5deep
encendidoUbuntu 16.04
pero cuando intenté leer la página de manual me dice que> No hay entrada manual para md5deepSi desea ver qué es diferente (en todo caso) entre dos directorios, rsync sería una buena opción.
Esto mostrará una lista de los archivos que son diferentes.
fuente
diff -qr /source/directory/ /destination/directory/
también mostraría archivos que difieren.username@hostname:/destination/directory
Creo que respondí a este antes con esta respuesta:
da:
b1a5b654afee985d5daccd42d41e19b2877d66b1
la idea es que hash todos los archivos corten los hash uno por línea, los clasifique y el hash produzca un solo hash. Esto no depende de los nombres de los archivos.
fuente
La aplicación cfv es bastante útil, no solo puede verificar y crear sumas de verificación MD5, también puede hacer CRC32, sha1, torrent, par, par2.
para crear un archivo de suma de verificación CRC32 para todos los archivos en el directorio actual:
para crear un archivo de suma de comprobación MD5 para todos los archivos en el directorio actual:
Para crear un archivo de suma de comprobación separado para cada subdirectorio:
Para crear un archivo de suma de verificación "super" que contenga archivos en todos los subdirectorios:
fuente
Utilicé hashdeep, como se explica en esta respuesta de askubuntu: Verifique la corrección de los archivos copiados :
Para calcular las sumas de verificación:
Para verificar y enumerar las diferencias:
Esto tiene una ventaja sobre md5deep en que mostrará archivos renombrados (movidos), agregados y eliminados, así como evitar el problema con archivos de longitud 0 señalados en la parte inferior de http://www.meridiandiscovery.com/how- a / validating-copy-results-using-md5deep .
fuente
Esto funcionó para mí: (ejecútelo mientras esté en el directorio que le interesa)
fuente
Puede crear sumas MD5 de cada archivo, ordenar estas sumas de verificación alfabéticamente y tenerlas (con o sin líneas nuevas). Dado que MD5 es criptográfico, debería funcionar bien con hashes de hashes.
Debe haber un cierto orden de cosas, de lo contrario obtendrá resultados diferentes para directorios iguales.
Y debe tener en cuenta que la adición de algún archivo a una dir cambiará por completo el resultado, incluso si era sólo una
.directory
de.DS_Store
archivo.fuente
Como un caso específico, supongamos que desea copiar algunos archivos del directorio1 al directorio2 y luego desea verificar una copia exitosa utilizando una comparación md5.
Primero. cd al directorio1 y escriba:
que creará un archivo de referencia que contiene una suma md5 para cada archivo en el directorio1. Una vez hecho esto, todo lo que tiene que hacer es cd al directorio2 y escribir:
El programa md5sum obtiene cada ruta del archivo md5sum.txt, calcula el md5sum de ese archivo en la carpeta de destino y luego lo compara con la suma que ha almacenado en el archivo.
Una vez que se complete el proceso, obtendrá un resumen como 'Algunos archivos no coincidieron' o algo así.
fuente
He tenido la necesidad de verificar la integridad de las copias de seguridad / réplicas que contienen una gran cantidad de archivos y terminé escribiendo un programa de línea de comandos llamado MassHash. Está escrito en Python. Un lanzador GTK + también está disponible. Es posible que desee verlo ...
http://code.google.com/p/masshash/
fuente