возобновление dd с ошибками чтения, пропуск/поиск номеров

возобновление dd с ошибками чтения, пропуск/поиск номеров

Я пытаюсь скопировать данные с довольно поврежденного компакт-диска с помощью следующей команды:

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

Однако устройство «of» отключилось, и dd остановился (выходные данные ниже).

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

Могу ли я продолжить с:

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

Или номера поиска/пропуска должны быть одинаковыми 1092636, или пропуск/пропуск должны отличаться друг от друга, или должно быть что-то совершенно иное?

PS Я знаю, что, возможно, я использую не ту команду для этого, например, ddrescue, вероятно, лучше. Но я, вероятно, застрял с dd сейчас(?). Я не ожидаю больше ошибок на стороне выходного файла.

решение1

Вы столкнулись с ошибками чтения, поэтому параметры conv=sync,noerrorпочти наверняка изменили поток данных, к сожалению, сделав ваш выходной файл бесполезным или, по крайней мере, неточной копией.

Каждый раз, когда на входе происходит плохое чтение (короткое чтение), опция conv=syncдополняет блок байтами NUL. ddКоманда попытается продолжить входной поток с того места, где он остановился, но на выходе теперь вставлено неизвестное количество байтов NUL.

Вам следует прекратить использование ddи использоватьddrescue, который был создан для восстановления данных с поврежденных носителей.

Ссылки на ответы по похожим темам

решение2

Использоватьddrescue. Он может считывать поврежденные носители, «сохраняя» поврежденные части, в то время как dd не может.

Представьте себе ваши исходные данные:

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

После повреждения ( X) они выглядят так:

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

Что будет читать dd conv=sync,noerror:

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

Что прочтет ddrescue.

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

Как вы видите, исходное сообщение, прочитанное dd, искажено, и если вы создадите таким образом образ файловой системы, он станет непригодным для использования. Образ ddrescue вы сможете смонтировать без проблем, что поможет вам получить доступ к неповрежденным данным, как обычно, а поврежденные можно будет легко отложить и обработать дальше.

Связанный контент