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?
Usando Ubuntu Linux
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?
Usando Ubuntu Linux
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.
apt-get install md5deep
md5deep -r directory
Para comparar una estructura de directorio, puede darle una lista de hashes para comparar:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
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.
-j0
que deshabilita el subprocesamiento múltiple (consulte la página del manual)
md5deep
con sudo apt-get install md5deep
encendido Ubuntu 16.04
pero cuando intenté leer la página de manual me dice que> No hay entrada manual para md5deep
Si desea ver qué es diferente (en todo caso) entre dos directorios, rsync sería una buena opción.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Esto mostrará una lista de los archivos que son diferentes.
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:
find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum
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.
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:
cfv -C
para crear un archivo de suma de comprobación MD5 para todos los archivos en el directorio actual:
cfv -C -t md5 -f "directorio actual.md5sums"
Para crear un archivo de suma de comprobación separado para cada subdirectorio:
cfv -C -r
Para crear un archivo de suma de verificación "super" que contenga archivos en todos los subdirectorios:
cfv -C -rr
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:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
Para verificar y enumerar las diferencias:
$ cd <directory2>
$ hashdeep -ravvl -k ~/hashOutput.txt .
hashdeep: Audit passed
Input files examined: 0
Known files expecting: 0
Files matched: 13770
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
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 .
Esto funcionó para mí: (ejecútelo mientras esté en el directorio que le interesa)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
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.
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 ...