Как исправить ошибку ввода / вывода с помощью dd?

14

Привет, я пытаюсь исправить мою систему Windows 7 со сломанным жестким диском, но он все еще работает.

Я пытаюсь скопировать все данные на новый диск для переустановки Windows 7. Диск с именем SQSERVICE.

Я не могу копировать вообще - см. Ниже:

$ sudo dd if=/dev/sdc1 of=/dev/sda1
dd: reading `/dev/sdc1': Input/output error
11233976+0 records in
11233976+0 records out
5751795712 bytes (5.8 GB) copied, 187.731 s, 30.6 MB/s

Как исправить эту «ошибку ввода / вывода»?

Erazer
источник
1
@Gertvddijk спасибо, чтобы исправить мою орфографическую проблему, я из Нидерландов все еще хорошо изучаю английский язык.
Erazer

Ответы:

16

Ты сам сказал: твой диск сломан. Вы можете попробовать ddrescue, он может обойти сломанный путь. Остерегайтесь, однако, что вы потеряете данные.

Восстановление из бэкапа будет проще :)

Правильное использование ddrescueвыглядит следующим образом:

sudo apt-get install gddrescue
sudo ddrescue /dev/sdc1 /dev/sda1

или если вы хотите stdoutподключиться к инструменту мониторинга progess:

sudo ddrescue /dev/sdc1 /dev/sda1 | pv
Деннис Каарсемакер
источник
да, я сказал, что, но восстановление из резервной копии находится на этом диске ... и у этого диска есть проблема только сектора, ну как я могу использовать эту команду? я просто новичок в Linux ..
Erazer
2
Итак, ваша резервная копия находится на том же диске, что и диск, который вы копируете ?! уроды
Деннис Каарсемакер
1
да тот же диск да, но не на том же разделе. ну, я немного глуп: '(бекап это вообще не важно
Erazer
6

Я не знаю, полезно ли это кому-либо, но если я найду эту страницу в своем поиске, возможно, она поможет кому-то (кроме ОП, который, надеюсь, решил свою проблему несколько месяцев назад).

В этом случае ddrescue может быть лучшим выбором для восстановления данных (в отличие от «исправления» ошибки / диска, как было сформулировано в первоначальном вопросе), как предложил Деннис.

Кроме того, вы также можете смонтировать диск и скопировать файлы. Это НАМНОГО быстрее, если есть много пустого пространства, или если вам нужны только определенные файлы. ПРЕДУПРЕЖДЕНИЕ: сделано с компьютера Linux, при этом теряются все расширенные атрибуты, такие как права доступа к файлам, поэтому это очень плохой выбор для файлов ОС, но допустимый для файлов пользователя. Выполнение этого из окон должно сохранить их, но может не обрабатывать ошибки плавно, возможно, делая это очень медленно.

Другой вариант «исправить» сектора, а не просто обойти их, - перераспределить поврежденные сектора. Если вам известен номер сектора (в вашем случае 11233976, исходя из размера блока в dd и размера сектора 512), просто запустите его и повторите для каждого нового поврежденного сектора:

hdparm –write-sector 11233976 –yes-i-know-what-i-am-doing /dev/sdb

ВНИМАНИЕ: Это уничтожит данные в этом секторе. Поэтому убедитесь, что вы действительно знаете, что делаете. Если этот сектор не может быть прочитан, его перезапись остановит ошибки, но это будет означать, что сектор будет содержать мусор, возможно повреждая важный файл.

См. Это для получения дополнительной информации: http://www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/

И если на вашем диске имеется большое количество (возможно, тысячи) поврежденных секторов (или видимых как Current_Pending_Sector, Offline_Uncorrectable или Reallocated_Sector_Ct), или если он новый и все еще находится на гарантии, или если число постоянно увеличивается, то вы должны заменить диск в любом случае. Не позволяйте им сказать вам, что перераспределение исправляет диск. Он только исправляет известные сбойные сектора и использует сектора, зарезервированные для перераспределения. Если диск подвержен развитию большего количества поврежденных секторов, проблема просто будет возвращаться, каждый раз повреждая некоторые данные.

Питер
источник
1

Хотя некоторые части диска повреждены, вы все равно можете копировать хорошие части диска.

$ dd --help
...
 noerror   continue after read errors
...
sudo dd if=/dev/sdc1 of=/dev/sda1 conv=noerror
Макс А.
источник