Я пытаюсь скопировать данные с довольно поврежденного компакт-диска с помощью следующей команды:
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 вы сможете смонтировать без проблем, что поможет вам получить доступ к неповрежденным данным, как обычно, а поврежденные можно будет легко отложить и обработать дальше.