¿Cómo verificar un CD contra una imagen ISO?

10

Tengo un CD físico quemado y la imagen ISO original del mismo. No se proporcionaron archivos de suma de verificación de referencia para el contenido del CD. ¿Cómo verifico que el CD real es correcto (corresponde a la imagen original) y completamente legible?

Ivan
fuente
¿Quiere verificar los datos en el CD justo después de que se quemó? Porque la mayoría de las herramientas de software de grabación tienen una opción para verificar los datos escritos (por ejemplo, Nero).
Silviu
Lo sé, pero necesito hacer la verificación no justo después del procedimiento de grabación, sino después de un tiempo (después de que el programa de grabación ya estaba cerrado), tal vez incluso en una PC diferente. Hasta donde sé, Nero no ofrece iniciar un procedimiento de verificación independientemente de un procedimiento de grabación; su función de verificación es solo un complemento para la grabación y solo puede ocurrir justo después de la grabación. Lo que quiero es insertar un CD, elegir un archivo ISO y hacer clic para verificar ... Otra restricción es que no quiero hacer esto en Linux ya que sospecho que mi controlador CD / IDE de Windows no está bien.
Ivan
Eso es realmente difícil, ¿estás grabando un CD de arranque o datos puros?
Margarita
Un CD de arranque ..
Ivan
Para su información, algunos ISO de Linux tienen una opción de arranque incorporada para verificar su contenido. Puede usar esa opción y verificará todos los archivos del disco contra un archivo que contenga sumas de verificación. También puede ejecutar md5sumusted mismo y comparar, si no desea iniciar el CD / DVD.
Skylar Ittner

Respuestas:

5

Primero, extrae su CD a un archivo temporal:

dd if=/dev/sr0 of=copy.iso

Luego verifica si copy.isoy orig.isotiene el mismo tamaño, por ejemplo con:

stat -c '%s %n' orig.iso copy.iso

Si el tamaño es idéntico, es fácil:

sha1sum orig.iso copy.iso

Pero noté que en ciertos casos el tamaño puede ser ligeramente diferente porque hay ceros finales en la copia o en la imagen original. Por ejemplo, si copy.isoes menor que orig.iso:

sha1sum copy.iso
head -c $(stat -c %s copy.iso) orig.iso | sha1sum

Por supuesto, también debe verificar que los bytes finales sean solo ceros:

od -j $(stat -c %s copy.iso) orig.iso

La primera línea, excepto el desplazamiento, debe ser solo ceros. La segunda línea debe ser un asterisco. El asterisco es evitar mostrar líneas idénticas consecutivas.

Francesco Turco
fuente
+1 para sumas de verificación. Este suele ser el estándar de facto para comparar archivos (o directorios) y no preocuparse por conocer las diferencias (como es el caso con diff): más mínimo.
nikitautiu
o puede hacer head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumpara evitar tener que hacer una imagen del CD quemado.
Hitechcomputergeek
4

Si el archivo ISO es el mismo que usó para grabar el CD, entonces aquí están mis dos favoritos:

diff /dev/sr0 /tmp/file.iso

Compara la imagen grabada con el archivo de imagen. Si te sientes un poco más masoquista, puedes probar algo como esto:

sha1sum /dev/sr0 /tmp/file.iso

y compara las firmas. Este es más útil si ya tienes la suma SHA1 en alguna parte. Ambos comandos leerán el medio hasta el final.

Si desea hacerlo como sugiere @ Marki555, primero querrá montar tanto la unidad óptica como la imagen. Aquí hay un script completo: (puede, por supuesto, prescindir de sudosi es root, una mala idea, en general)

sudo mkdir /tmp/{a,b}
sudo mount /dev/sr0 /tmp/a -o ro # or whatever
sudo mount /tmp/file.iso /tmp/b -o loop,ro
diff -dur /tmp/{a,b}
sudo umount /tmp/a
sudo umount /tmp/b
sudo rmdir /tmp/{a,b}
Alexios
fuente
3
cmp [-l]es más adecuado para archivos binarios. Diff funciona mejor en texto.
derobert
3

Si todavía tiene el ISO, puede compararlos byte a byte usando cmp. Es un comando lo suficientemente simple y sale en la primera diferencia que encuentra, por lo que es considerablemente más rápido que hacer una suma de verificación si realmente hay un error desde el principio.

cmp /dev/cdrom /path/cdrom.iso

Posibles resultados en el éxito:

  • sin salida: es idéntico y todo está bien. Puede agregar && echo OKel comando si la falta de salida lo confunde.
  • cmp: EOF on cdrom.iso: es idéntico pero el cdrom tiene más bytes que su archivo iso. Esto generalmente se debe al relleno cero al final del cdrom. Como eso no importa en la práctica, sigue siendo un éxito.

Posibles resultados en caso de fracaso:

  • cmp: EOF on /dev/cdrom: por alguna razón, los datos en su CDROM están incompletos. Tal vez su ISO era demasiado grande para caber en un CD real.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: hay alguna diferencia inesperada entre su CDROM y su imagen ISO.
Frostschutz
fuente
mientras que diff informa 'diferir', ¡su método cmp es increíble!
qrtLs
2

Puede verificar que el CD sea completamente legible usando dd(por ejemplo dd if=/dev/cdrom of=/dev/null). Pero no puede compararlo directamente con una imagen ISO. Cada software creará un archivo ISO ligeramente diferente (tal vez algunos encabezados o relleno diferentes), aunque estas diferentes imágenes ISO proporcionarán el mismo contenido de CD (estructura de directorio, atributos de archivo y contenido de archivo).

Por lo tanto, solo puede montar el CD, montar la imagen ISO y compararla a nivel de sistema de archivos mediante el uso de algún tipo de herramienta de comparación de directorios (lo siento, todavía no utilicé ninguna en Linux).

Marki555
fuente
diff -rcomparará el contenido del directorio de forma recursiva.
Kevin
55
Dado que el CD se grabó a partir de una imagen iso ya preparada, no hay nada que se construya de manera diferente al grabar, por lo que puede comparar directamente el CD con la imagen iso.
psusi
-1

Brasero puede hacer eso: Herramientas -> Verificar integridad ...

damian101
fuente