Восстановление данных из поврежденных носителей
Утилита dd
Старая, как сам UNIX, утилита, входящая решительно в любой нормальный дистрибутив UNIX-основанных систем. Более того, это вариант её использования для проверки дисков. Теперь она послужит нам для нужд восстановления.
Собственно, её использование приведёт к копированию данных, несмотря на ошибки. Внимательное чтение мануала man dd даёт ключ к использованию:
dd if=/dev/cdrom of=~/bad.iso bs=2048 conv=noerror
Игнорирование ошибок чтения обеспечивает именно последний параметр, при этом вы будете наблюдать многочисленные сообщения об ошибках.
В Сети есть мануал на русском для тех, кто испытывает трудности с англицким наречием.
Утилита recoverdm
В комплект поставки дистрибутивов она входит редко, но распространяется под лицензией GPL, и скачать её отсюда.
Требует рутовых прав, так как использует некоторое "трюкачество", например сброс состояния контроллера и чтение "сырых" данных (RAW-data). Обеспечивает большую точность восстановления, чем dd, и больший набор параметров. Однако работает гораздо медленнее dd в силу того, что гораздо большее количество попыток чтения совершается. Способна восстанавливать данные с дискет, CD/DVD и жёстких дисков. Кроме того, поставляется с утилитой mergebad, которая полезна в случае, например, когда есть несколько компакт-дисков, и все они битые, а информация на них распределена.
Компиляция из исходников посредством команды make не представляет никакой трудности. Нужно поставить на ней соответствующие права и выполнить команду:
sudo ./recoverdm -t 20 -i /dev/hda -o bad.iso -l badsectors.bad -n 10 -r 12
После чего начнётся медленное и печальное восстановление. Лучше всего ставить эту процедуру на ночь, так как при сколько-нибудь обширных сбоях чтения компакт-дисков такое считывание может занять несколько часов.
В процессе считывания вы будете видеть в консоли такие вот сообщения:
Trying RAW read... Tried reading 10 times, failed doing that. Continuing... error at 732188672 bytes, retrying: 1 error at 732188672 bytes, retrying: 2 error at 732188672 bytes, retrying: 3 seek to end... error at 732188672 bytes, retrying: 4 resetting device... error at 732188672 bytes, retrying: 5 resetting controller... error at 732188672 bytes, retrying: 6 error at 732188672 bytes, retrying: 7 error at 732188672 bytes, retrying: 8 error at 732188672 bytes, retrying: 9 error at 732188672 bytes, retrying: 10 Trying RAW read... Tried reading 10 times, failed doing that. Continuing...
которые будут тем многочисленнее, чем больше запорчен диск и чем больше вы поставили попыток чтения. Естественно, утилита не волшебная, и те данные, которые восстановить не удалось, просто заменяет пустыми блоками. Если на диске было много фотографий, потерю десятка вы переживёте менее болезненно, чем всего диска целиком.
Восстановление этой программой занимает существенно больше времени, чем dd. Не ждите, что диск с обширными повреждениями (более 10% секторов) проутюжится меньше, чем за 7-8 часов (при многократном считывании с параметрами, указанными выше). Но есть проверенный способ: ставим на ночь и идём спать...
В этих линках вы найдете полезные информации по текущему совету:
debianadmin.com
debianadmin.com-2
debianadmin.com-3
- 3574 просмотра
Страница для печати


Ну до кучи: Восстановление стертых данных с Compact Flash (FAT32)
dd conv=noerrorпропускает сбойные секторы, поэтому полученный с его помощью образ диска совершенно ни на что не годен, кроме выковыривания данных глазками и ручками.Я уж начал писать соответствующую программу, и даже написал её, но потом обнаружил ddrescue, которая умеет больше.
В частности, можно взять совершенно убитый винчестер, сказать что-то вроде
ddrescue /dev/hda hda.raw logfile, а полученныйhda.rawс обнулёнными сбойными секторами скормить какому-нибудь Qemu/KVM в режиме Copy-On-Write и там fsck-ть, пилить и строгать до посинения.надо всго лишь к dd conv=noerror добавить sync и dd не будет пропускать сектора а будет их забивать нолями
как раз этим и занимаюсь. но имея образ диска в виде файла, с партишнами и файловыми системами можно его монтировать,
в комментах этого типса http://linsovet.com/mount-partition-in-hdd-image - много полезной инфы о монтировании образа.
Поделись опытом подробнее
Почему "но"? Я вроде бы так и написал: '/dev/hda' :)
Отправить комментарий