retomando dd com erros de leitura, pular/buscar números

retomando dd com erros de leitura, pular/buscar números

Estou tentando copiar dados de um CD bastante danificado usando o seguinte comando:

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

No entanto, o dispositivo 'of' foi desconectado e o dd parou (saída abaixo).

...
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

Posso retomar com:

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

Ou os números de busca/pular deveriam ser ambos 1092636, ou pular/procurar deveriam ser diferentes um do outro, ou algo totalmente diferente?

PS: Eu sei que provavelmente estou usando o comando errado para isso, por exemplo, ddrescue é provavelmente melhor. Mas provavelmente estou preso ao dd agora (?). Não espero mais erros no lado do arquivo de saída.

Responder1

Você encontrou erros de leitura, então as opções conv=sync,noerrorquase certamente alteraram o fluxo de dados, infelizmente tornando seu arquivo de saída inútil ou, pelo menos, uma cópia imprecisa.

Cada vez que há uma leitura incorreta (leitura curta) na entrada, a conv=syncopção preenche o bloco com bytes NUL. O ddcomando tentará continuar o fluxo de entrada de onde parou, mas a saída agora possui um número desconhecido de bytes NUL inseridos.

Você deve parar de usar dde usarddrescue, que foi criado para recuperar dados de mídias ruins.

Respostas referenciadas para tópicos semelhantes

Responder2

Usarddrescue. Ele pode ler mídia danificada, "preservando" as partes danificadas, enquanto o dd não consegue.

Imagine seus dados originais:

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

Após o dano ( X) eles ficam assim:

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

O que dd conv=sync,noerror irá ler:

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

O que o ddrescue irá ler.

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

Como você pode ver a mensagem original lida por dd está distorcida e se você produzir desta forma a imagem do sistema de arquivos ela ficará inutilizável. Imagem Ddrescue que você pode montar sem problemas, o que o ajudará a acessar dados não danificados como de costume e danificados para serem facilmente colocados de lado e tratados em seguida.

informação relacionada