reanudando dd con errores de lectura, omitir/buscar números

reanudando dd con errores de lectura, omitir/buscar números

Estoy intentando copiar datos de un CD bastante dañado usando el siguiente comando:

dd if=/dev/sr1 of=IDT.img conv=sync,noerror status=progress

Sin embargo, el dispositivo 'of' se desconectó y el dd se detuvo (resultado a continuación).

...
dd: error reading '/dev/sr1': Input/output error
1074889+17746 records in
1092635+0 records out
559429120 bytes (559 MB, 534 MiB) copied, 502933 s, 1.1 kB/s
dd: writing to 'IDT.img': Input/output error
1074889+17747 records in
1092635+0 records out
559429120 bytes (559 MB, 534 MiB) copied, 502933 s, 1.1 kB/s

¿Puedo reanudar con:

dd if=/dev/sr1 of=IDT.img conv=sync,noerror status=progress seek=1092635 skip=1092635

¿O los números de búsqueda/salto deberían ser ambos 1092636, o deberían ser diferentes entre sí, o algo completamente diferente?

PD: Sé que probablemente estoy usando el comando incorrecto para esto; por ejemplo, ddrescue probablemente sea mejor. Pero probablemente ahora me quede atrapado con dd (?). No espero más errores en el lado del archivo de salida.

Respuesta1

Ha encontrado errores de lectura, por lo que es conv=sync,noerrorcasi seguro que las opciones hayan alterado el flujo de datos, desafortunadamente haciendo que su archivo de salida no tenga valor o al menos sea una copia inexacta.

Cada vez que hay una lectura incorrecta (lectura corta) en la entrada, la conv=syncopción rellena el bloque con bytes NUL. El ddcomando intentará continuar el flujo de entrada desde donde lo dejó, pero la salida ahora tiene un número desconocido de bytes NUL insertados.

Deberías dejar de usar ddy usarddrescue, que fue creado para recuperar datos de medios defectuosos.

Respuestas referenciadas para temas similares

Respuesta2

Usarddrescate. Puede leer medios dañados "preservando" las piezas dañadas, mientras que dd no puede.

Imagine sus datos originales:

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c d e f g h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

Después del daño ( X) se ven así:

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c X X X X h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

Lo que leerá dd conv=sync,noerror:

  +-+-+-+-+-+-+-+-+
  |a b c h i j k l|
  +-+-+-+-+-+-+-+-+

Qué leerá ddrescue.

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c 0 0 0 0 h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

Como puede ver, el mensaje original leído por dd está sesgado y si produce de esta manera una imagen del sistema de archivos quedará inutilizable. La imagen de Ddrescue se puede montar sin problemas, lo que le ayudará a acceder a datos intactos como de costumbre y dañados para dejarlos a un lado y tratarlos fácilmente a continuación.

información relacionada