Me gustaría encontrar un md5sum
(o cálculo similar) de una carpeta sin comprimirlo en un archivo.
Por ejemplo, si en la carpeta MyFolder
que tenemos los archivos 1.txt
, 2.txt
y 3.txt
, que contiene:
1.txt
El texto en 1.txt
2.txt
El texto en 2.txt
3.txt
El texto en 3.txt
¿Cómo puedo calcular el total md5sum
de esto MyFolder
? ¿Hay alguna manera? Quiero usar esto para verificar si dos carpetas tienen el mismo contenido.
Esto puede ser útil para verificar si dos CD o carpetas son iguales. Me gustaría una manera fácil de hacerlo.
files
checksum
verification
GarouDan
fuente
fuente
sudo apt-get install md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
muchas gracias.-o
opción para manejar los tipos de archivos.Si no desea archivarlo, tal vez podría hacer algo como esto
Puede que tenga que adaptar los
find
comandos para ser más precisos.EDITAR Puede agregar
-exec
a su llamada de búsqueda para comparar el contenido de los archivos. Algo similar a esto:Recuerde que es posible que desee adaptar esto.
fuente
Una forma de probar podría ser generar una suma md5 basada en la concatenación de todos los archivos de la carpeta y sus subcarpetas. Tenga en cuenta que esto también requiere que los archivos tengan los mismos nombres (ya que deben estar en el mismo orden de clasificación). El siguiente código debería funcionar:
Si realmente le importan los nombres de los archivos, etc., podría usar un bucle para comparar lo que está en
${_files_in_old_dir}
y${_files_in_new_dir}
. Esto debería funcionar para la mayoría de los casos (al menos verifica el número de archivos en el directorio y sus subdirectorios).fuente
globstar
. Cual es el errorNoté que la publicación original es bastante antigua, sin embargo, creo que esta información aún puede ser valiosa para aquellos que buscan una solución para verificar que los archivos se copien correctamente. Rsync podría ser el mejor método para copiar datos y las respuestas dadas en este hilo son buenas, sin embargo, para aquellos que no tienen experiencia con Linux, intentaré dar una explicación más detallada.
Escenario: acaba de copiar datos de un disco a otro, con muchos subdirectorios y archivos. Desea verificar que todos los datos se copien correctamente.
Primero verifique que md5deep esté instalado emitiendo el comando
md5deep -v
.Si recibe un mensaje que dice algo como 'comando no encontrado', instale md5deep por
apt-get install md5deep
.Se asume que solo desea tratar con archivos normales. Si desea tratar con otros tipos de archivos, consulte el indicador -o en el manual md5deep. (
man md5deep
)Ahora puede continuar, y suponemos que copió archivos de
/mnt/orginal
a/mnt/backup
, sustituya estos por cualquier directorio que esté utilizando.Primero cambie al directorio de origen, esta es la fuente original de los archivos que copió o realizó una copia de seguridad:
cd /mnt/orginal
Luego haga una suma de verificación de cada archivo:
md5deep -rel -o f . >> /tmp/checksums.md5
Este comando explicó:
-r
habilita el modo recursivo-e
muestra el indicador de progreso-l
habilita rutas de archivos relativas.-o f
solo funciona en archivos normales (no en dispositivos de bloque, tuberías con nombre, etc.).
le dice a md5deep que comience en el directorio actual.>> /tmp/checksums.md5
le dice a md5deep que redirija toda la salida a/tmp/checksums.md5
.Tenga en cuenta que si desea sobrescribir contenido en versiones anteriores de
/tmp/checksums.md5
, use>
y no>>
Tenga en cuenta que este comando puede tardar bastante, dependiendo de la velocidad io y el tamaño de los datos. Podría experimentar con nice y / o ionice para aumentar el rendimiento de md5deep, pero eso está fuera del alcance de esta respuesta.
Cuando finaliza la creación de las sumas de verificación, ahora tiene un archivo que tiene entradas similares a:
La primera columna es la suma de verificación md5, y la segunda columna es la ruta relativa al archivo al que pertenece la suma de verificación.
Si desea ver cuántos archivos existen en el archivo de suma de verificación, emita el comando:
wc /tmp/checksums.md5 -l
Ahora, desea verificar que los datos copiados sean correctos:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
La única diferencia con respecto a cuando creamos las sumas de verificación es -X, que muestra el hash actual de un archivo si la entrada en el archivo checksums.md5 no coincide. Entonces, al final de la prueba, si
/tmp/compare.result
está en blanco, puede confiar en que todos los archivos se copian correctamente ya que las sumas de verificación coinciden.Tenga en cuenta que solo los archivos enumerados en el
/tmp/checksums.md5
archivo serán verificados para una suma de verificación correcta, si hay archivos adicionales en el/mnt/backup
directorio, md5deep no le notificará sobre estos.Notas:
No necesariamente tiene que usar la redirección para almacenar archivos de salida. Consulte el manual de md5deep para obtener más información.
Es posible que deba ejecutar los comandos md5deep como root, según los permisos de los archivos que maneja.
fuente
Si desea verificar de forma recursiva las diferencias entre dos directorios
/path1
y/path2
sin usarmd5deep
:Explicación:
path1
para hacer que todas las líneas impresasfind
sean relativas apath1
(cd /path1
)&& find . -type f
)find
como entrada paramd5
(| xargs md5
)El resultado se verá así si hay alguna diferencia:
fuente