Noté 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:
69c0a826b29c8f40b7ca5e56e53d7f83 ./oldconfig-11-09-2013/etc2/apm/event.d/20hdparm 651f3c7f79a14332f9fa7bb368039210 ./oldconfig-11-09-2013/etc2/apm/event.d/anacron 50d89784c1e201f68ff978b95ff4bdfb ./oldconfig-11-09-2013 /etc2/apm/scripts.d/alsa e9b9131660a8013983bc5e19d7d669eb ./oldconfig-11-09-2013/etc2/ld.so.cache
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.
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.