Tengo un archivo ISO que grabé en un CD. Ahora, ¿cómo puedo comprobar si el CD se creó correctamente? Me gustaría un comando que calcule la suma hash que pueda usar para verificar la suma hash que calculo en el archivo ISO. Idealmente, el comando debería:
dd
el disco de nuevo a un archivo y luego ejecute md5sum
en el archivo es inaceptableSi no hay una respuesta que no pueda satisfacer a todos, también agradeceré la coincidencia más cercana. Aún mejor si me puede decir por qué no es tan sencillo.
El problema básico es que queremos tomar el md5sum de exactamente la misma información que estaba originalmente en la ISO. Cuando escribe el ISO en un CD, es probable que haya un espacio en blanco al final del disco, lo que inevitablemente cambia el md5sum. Por lo tanto, el camino más corto:
md5sum /dev/cdrom
no funciona . Lo que funciona (y es común en la documentación en línea ) es solo leer el número exacto de bytes del dispositivo y luego hacer el md5sum
. Si conoce la cantidad de bytes, puede hacer algo como:
dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum
donde 'xxxxx' es el tamaño de la iso en bytes.
Si no conoce la cantidad de bytes, pero aún tiene la iso en su disco, puede obtenerlos usando ls haciendo algo como lo siguiente ( tomado de aquí ):
dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum
Hay muchas otras construcciones unifilares que deberían funcionar. Observe que en cada caso estamos usando dd
para leer los bytes del disco, pero no los estamos canalizando a un archivo, sino que los estamos entregando a md5sum de inmediato.
Se pueden realizar posibles mejoras de velocidad haciendo algunos cálculos para usar un tamaño de bloque más grande (el bs=
en el comando dd
).
Hay un programa para esta tarea. Se llama - checkisomd5
. En Ubuntu se puede instalar mediante comando:
Sudo apt-get install isomd5sum
Si el tamaño de la imagen en el disco es divisible por 2048, número entero, que parece ser muy común, entonces puede obtener una suma MD5 precisa de la siguiente manera, donde sr0
es el nombre del óptico -que se puede encontrar usando, lshw -C disk
- y donde 'count' es el dividendo del tamaño de la imagen dividido por 2048.
dd if=/dev/sr0 bs=2048 count=356352 |md5sum