Журнал LinuxFormat - перейти на главную

LXF128:TestDisk

Материал из Linuxformat
Перейти к: навигация, поиск
TestDisk

Содержание

Спаситель данных

В потерянном разделе сгинул ваш моджо? Маянк Шарма покажет, как вернуть его с помощью TestDisk.

Чтобы испортить раздел или угробить важные данные, особых усилий не требуется. Случайный пробел в команде rm опустошит ваш домашний каталог с той же легкостью, как нажатие не той клавиши в Fdisk удаляет раздел из MBR. Все, что нужно – доверие этим всесильным утилитам, ложное чувство контроля и спешка. Но если вы спохватились сразу после уничтожения данных, то у вас есть хороший шанс на восстановление, при наличии правильных инструментов. И TestDisk – как раз то, что доктор прописал.

TestDisk – программа восстановления данных, используемая также для их сбора. Она исправит таблицы разделов и сделает незагружаемые диски вновь загружаемыми. TestDisk способен распознать такие распространенные файловые системы, как DOS, FAT16/32, NTFS, exFAT, ext2/3, LVM2, RAID 1,4,5 и 6, карта разделов Apple, JFS, Reiser4, CramFS, и даже метки дисков в Solaris и BSD. Вы можете использовать его на своих домашних компьютерах, где запущен Linux, Windows или Mac OS X, или ZFS RAID на университетском сервере.

Вдобавок TestDisk умеет восстанавливать и перестраивать загрузочные секторы FAT16/FAT32/NTFS и определять резервные суперблоки в ext2/ext3. Самое же в нем приятное – то, что для восстановления данных с помощью TestDisk не нужно понимать механизм этого восстановления. Итак, начнем...

Ставим TestDisk

В примерах этого руководства мы использовали компьютер с двумя дисками. Если у вас тоже такой, установите TestDisk на загрузочный диск, чей раздел является рабочим.

Например, можно инсталлировать TestDisk в Ubuntu на основном диске, чтобы восстановить вторичный диск. Конечно, лучше всего иметь его на Live-дистрибутиве: это позволит работать на всех дисках компьютера, а также восстанавливать файлы на съемных устройствах хранения, вроде жесткого диска, подключаемого к USB.

Для максимального эффекта всегда пользуйтесь свежей версией TestDisk, которой может и не быть в репозитории вашего дистрибутива. Например, новейшая версия TestDisk умеет сама восстанавливать удаленные файлы с разделов NTFS, и PhotoRec вам понадобится лишь при повреждении раздела.

Использование TestDisk

На минуту вообразим, что вы попытались примонтировать раздел NTFS, а ваш дистрибутив его не обнаружил, или Grub жалуется, что не может отыскать место установки Linux. Видимо, вы только что попытались изменить диск или один из его разделов утилитой типа Fdisk или GParted. Время пускать в ход TestDisk. Прежде чем запустить его, запишите информацию о цилиндрах для вашего диска или раздела. Это пригодится позднее, при поиске потерянных разделов, так как здесь говорится о физическом начале и конце диска или отсутствующего раздела. Ее можно получить из fdisk -l:

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 51
Disk identifier: 0x22122211
Device Boot	 Start	 End	 Blocks	 Id	 System
/dev/sda1	 985	 1044	 481950	 82	 Linux swap / Solaris
/dev/sda2	 1	 984	 7903948+	 83	 Linux
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00096f14
Device Boot	 Start	 End	 Blocks	 Id	 System

Наш вторичный диск, sdb, пуст, поскольку (по легенде) мы случайно удалили с него NTFS-раздел. Вспомним, что вывод fdisk -l отражает текущее состояние диска и его разделов. Если на всем диске у вас только один раздел, то его стартовый и конечный цилиндры будут соответствовать границам диска. Однако при наличии нескольких разделов, в особенности логических, от вывода fdisk особого прока не будет – так что неплохо бы сохранить вывод fdisk -l только что размеченного (исправного) диска где-нибудь в удобном месте. В нашем руководстве мы предположим, что таблица неповрежденных разделов вторичного диска имеет пример но такой вид:

Device Boot	 Start	 End	 Blocks	 Id	 System
/dev/sdb1	 1	 626	 5028313+	 7	 HPFS/NTFS
/dev/sdb2	 627	 1598	 7807590	 83	 Linux
/dev/sdb3	 1599	 2610	 8128890	 5	 Extended
/dev/sdb5	 1599	 2610	 8128858+	 7	 HPFS/NTFS

Пусть мы случайно стерли расширенный раздел NTFS sdb5. Чтобы вернуть его, откройте терминал и запустите TestDisk командой sudo testdisk. Согласившись на ведение журнала (который пригодится в дальнейшем, если восстановление не удастся), вы увидите все диски, присоединенные к компьютеру. Выберите тот, где вы потеряли раздел. Затем вас попросят выбрать тип таблицы раздела – например, Intel, Mac, Sun и т. п.

После этого TestDisk предложит различные опции восстановления. Выберите пункт Analyse, отмеченный по умолчанию. Он считывает структуру разделов и ищет потерянные. Сначала выводится текущая структура раздела – сравните ее с тем, что выдавал fdisk, чтобы найти отсутствующие или продублированные разделы. Если после проверки структуры нажать кнопку Quick Search, то TestDisk спросит, нужно ли искать разделы, созданные под Windows Vista. После завершения вы увидите список потерянных разделов, например, такой:

Partition		 Start	 End	 Size in sectors
* HPFS - NTFS	 0	 1	 1	 625
254		 63	 10056627 [Partition1]
P Linux		 626	 0	 1	 1597
254		 63 	 15615180 [Partition2]
L HPFS - NTFS	 1598 	 1	 1 	 2609
254		 63	 16257717 [Partition5]

На разделы, обозначенные как Partition1 и Partition2, внимания обращать не будем – ведь мы знаем, что они есть на диске; а рассмотрим Partition5. Чтобы убедиться, что это именно тот раздел, что потерялся, сравните стартовый и конечный цилиндры с тем, что выдавал fdisk, когда все было в порядке. Для пущей уверенности выделите этот раздел и нажмите P, чтобы увидеть список файлов (и каталогов) на нем.

Теперь, убедившись, что это именно тот самый случайно удаленный NTFS-раздел, переходите к следующему этапу. Здесь выопять увидите структуру разделов, например:

Partition	 Start	 End	 Size in sectors
1 * HPFS - NTFS	 0	 1	 1	 625 254 63
10056627 [Partition1]
2 P Linux	 626	 0	 1	 1597 254 63
15615180 [Partition2]
3 E extended LBA	 1598	 0	 1	 2609 254 63
16257780
5 L HPFS - NTFS	 1598	 1	 1	 2609 254 63
16257717 [Partition5]

Сейчас, с учетом отсутствующего раздела, новая таблица разделов должна походить на первоначальный вывод fdisk. Если это не  так, можно проделать углубленный поиск, который мы рассмотрим позднее, при охоте за трудноуловимыми разделами. Поскольку в нашем случае совпадение есть, просто выберем Write, чтобы сохранить таблицу разделов на диск. Выйдите из программы и перезагрузитесь – и ваш раздел будет уже на своем месте.

Расширенный TestDisk

Мы разобрали простой и рядовой пример восстановления раздела с помощью TestDisk. Однако бывают ситуации, когда удалено несколько разделов, или таблица разделов неремонтопригодна – тут-то и выходят на арену расширенные опции. Рассмотрим некоторые из них.

Иногда разделы восстанавливаются, но их тип определяется неправильно. При поиске раздела TestDisk отображает его тип в первом столбце, где для загрузочного раздела стоит *, для первичного – P, для логического – L и для расширенного – E, например:

* HPFS - NTFS	 0	 1	 1	 625 254 63
10056627 [Partition1]
P Linux	 626	 0	 1	 1597 254 63
15615180 [Partition2]

Используя курсорные клавиши «вправо» и «влево», можно поменять тип выделенного раздела.

Есть и другие опции для работы с разделами, доступные в самом начале процедуры восстановления, сразу после выбора типа таблицы разделов диска. Непосредственно под Analyse находится вкладка Advanced, которая содержит некоторые продвинутые инструменты для файловых систем. Здесь есть возможность поменять формат раздела, что может оказаться полезным, если восстанавливаемый раздел переформатирован. Также можно создать точную 1:1 копию выбранного раздела, с помощью пункта Image Creation.

Если вы мучили свой диск различными программами для разметки, есть шанс получить в итоге неправильную геометрию диска. TestDisk полагается на эти данные при исследовании разделов, так что очень важно, чтобы они были корректными. Эти числа отображаются при выборе диска. Если они не совпадают с тем, что изначально выдал fdisk, то анализ разделов может пройти неверно. Опция Geometry (расположенная под Advanced) позволит вам ввести правильные значения CHS (Cylinder, Heads, Sector) для диска.

По уши в проблемах

Способов изуродовать таблицу разделов столько, что и не знаешь, к чему это может привести. Иногда опции Quick Search в TestDisk недостаточно, чтобы найти все или некоторые из потерянных разделов. Опция Deeper Search сканирует все цилиндры, а также обращается к резервным загрузочным секторам и суперблокам, чтобы найти побольше разделов.

Не удивляйтесь, если обнаружится больше разделов, чем имелось на жестком диске в самом начале. Многие из них – просто образы-призраки тех разделов, что когда-то существовали; не все они поддаются восстановлению, но нередко занимают одно и то же место на диске, так что будьте осторожны. Для более глубокого поиска разделов, после того, как результаты Quick Search отобразились в новой таблице разделов, выберите Deeper Search вместо записи таблицы на диск. Это займет еще какое-то время, в зависимости от размера вашего диска и от сложности таблицы разделов.


В найденном списке разделов некоторые пункты будут зеленого цвета. TestDisk знает, что они восстанавливаемые, так как они присутствуют в резервной копии загрузочного сектора или в суперблока. Проблема будет с разделами, занимавшими одно и то же место, например:

* HPFS - NTFS 	 0 	 1 	 1 	 625 254 63
10056627 [Partition1]
D HPFS - NTFS 	 0 	 1 	 1 	 625 254 63
10056627 [Partition1]
P Linux 	 626 	 0 	 1 	 1597 254 59
15615176 [Partition2]
D Linux 	 626 	 0 	 1 	 1597 254 59
15615176 [Partition2]
L HPFS - NTFS 	 1598 	 1 	 1 	 2609 254 63
16257717 [Partition5]

Как и в Quick Search, после того, как TestDisk найдет разделы, вы сможете вывести список файлов на каждом из них с помощью клавиши P. На одном или нескольких дубликатах это не выйдет, и TestDisk пожалуется вам, что файловая система повреждена. Пометьте такие разделы как удаленные (D) и продолжайте.

Если вы только что восстановили NTFS-раздел, TestDisk может пожаловаться, что загрузочный сектор поврежден. Он потребует правильный загрузочный сектор NTFS для чтения раздела, даже если тот не является загрузочным. Чтобы исправить это, используйте Backup BS для копирования резервного загрузочного сектора на текущий. После этого TestDisk проверит секторы на совпадение и выдаст сообщение «Structure: OK». Это означает, что TestDisk убедился в отсутствии первичного раздела между двумя расширенными разделами, и не нашел разделов, использующих одно и то же дисковое пространство.


Несмотря на свою мощь, TestDisk не в силах помочь со всеми проблемами, связанными с таблицей разделов. Иногда он не в состоянии сделать диск загружаемым снова. Если загрузочный сектор NTFS-раздела поврежден, то даже Live CD не сможет смонтировать раздел и копировать данные за его пределы. Тут понадобится такая утилита восстановления данных, как PhotoRec от TestDisk.

Кроме чтения незагружаемых дисков, PhotoRec также восстанавливает файлы с отформатированных и «переустановленных» разделов, благодаря тому, что игнорирует файловую систему и работает с данными на низком уровне. Вспомните, что при всяком удалении файла тот не исчезает с диска; просто его место помечается как свободное и готовое к использованию. В зависимости от типа файловой системы и ее применения, PhotoRec с легкостью восстановит файлы, которые вы считали навеки утраченными.

PhotoRec понимает и восстанавливает файлы сотен форматов. Сюда входит все – от архивов 7-Zip, Zip и Tar, до RPM, Deb и почти всех мультимедиа-форматов изображений, звука и видео, а также файлов VMDK виртуальных дисков VMware.

Разберемся

Работа PhotoRec похожа на работу TestDisk. После выбора диска укажите раздел для поиска. Вас спросят, хотите ли вы искать только в незанятом месте диска или на всем разделе, и еще надо будет указать тип файловой системы (NTFS, ext3 и прочее), где содержался файл.

После этого ступайте обедать: PhotoRec очень скрупулезен. Он ищет среди файлов всех поддерживаемых форматов, однако можно ограничить их диапазон в меню File Opt. По окончании работы PhotoRec вы увидите тьму файлов со странными именами, разных форматов, в одном каталоге. PhotoRec дает им имя по мере нахождения, оставляя сортировку за вами. Однако можно упростить себе задачу, покувыркавшись в командной строке – вот, например, команда, распределяющая файлы разных форматов по папкам:

$ find /var/phoenix/ -name “*.jpg” | xargs -I mv {}/var/phoenix/Images

Она предполагает, что вы сохраняете восстанавливаемые файлы в каталоге /var/phoenix, находит все файлы с расширением *.jpg и перемещает их в Images/. Поскольку также будут восстановлены маленькие файлы JPEG и GIF из кэша браузера и миниатюры из каталога .thumbnails, вы, возможно, захотите избавиться от них:

$ find /var/phoenix/Images/ -name “*.jpg” -size -1024k | xargs -i mv {} /var/phoenix/Images/tiny

Эта команда перемещает файлы размером меньше 1 MБ в папку tiny, которую легко удалить после просмотра. Сверх того, можно применить программы типа Jhead и libextractor, которые дадут файлам имена согласно их EXIF-метаданным, например, метке дата/время.

Успех работы TestDisk зависит от того, насколько сильно испорчена ваша таблица разделов. TestDisk умеет восстанавливать отформатированные загрузочные разделы, но его эффективность зависит от типа формата и того, как использовался диск после порчи. Если вы подсели на утилиты типа Fdisk и GParted и у вас кривые руки, побалуйте себя – держите TestDisk невдалеке.

Шаг за шагом: Возродим отформатированный раздел

Шаг 1

  • 1 Смена типа раздела
Запустите TestDisk обычным способом, перейдите в Advanced и выделите только что отформатированный раздел. Выберите Type и введите тип файловой системы, соответствующий изначальной.

Шаг 2

  • 2 Перестройка загрузочного сектора
В листинге таблицы разделов выберите Boot, чтобы восстановить загрузочный сектор раздела. Rebuild BS перестраивает загрузочный сектор из резервной копии. Для подтверждения перейдите к List.

Шаг 3

  • 3 Запись таблицы разделов
Теперь ищите недостающий раздел с помощью опции Analyse. TestDisk без проблем обнаружит его. Просто запишите таблицу разделов и выйдите.

Шаг за шагом: Восстановим файлы с помощью PhotoRec

Шаг 1

  • 1 Выберите раздел
Чтобы восстановить файлы с раздела, сначала запустите PhotoRec; потом выберите диск, на котором находится раздел, и укажите тип таблицы разделов.

Шаг 2

  • 2 Выберите место сканирования
После выбора типа файловой системы раздела, примите решение, хотите вы сканировать весь раздел или только свободное место.

Шаг 3

  • 3 Укажите папку восстановления
Выберите папку (это может быть съемный диск, примонтированный к /media), куда записывать восстановленные файлы. И пусть PhotoRec поколдует.

Понимание разделов

Не нужно быть экспертом в области восстановления данных, чтобы использовать TestDisk, однако следует представлять, как разбит диск. Таблица разделов содержит 4 слота по 16 байт каждый, которые ограничивают количество первичных разделов на один жесткий диск четырьмя штуками. Обычно один из этих разделов помечен как расширенный и содержит несколько логических разделов. У вас может быть три первичных раздела (sda1, sda2, sda3) и четвертый расширенный раздел, содержащий несколько логических разделов (sda5 и так далее).

При поиске разделов вы увидите, что некоторые из них накладываются друг на друга или расположены за пределами таблицы. Иногда TestDisk жалуется на то, что видит первичный раздел между логическими, что невозможно.

Если TestDisk не может пристроить раздел к месту, вам не только придется разместить его самостоятельно, но и определить, первичный он или логический. Первый первичный раздел обычно начинается на цилиндре 0, головка 1, сектор 1. Если у вас есть другие первичные разделы, они начинаются на ненулевом цилиндре (скажем, на 626), головка 0, сектор 1. А вот логические разделы начинаются с ненулевого цилиндра (2231), головка 1, сектор 1. Вы можете упорядочить их, используя координаты конца раздела.

Персональные инструменты
купить
подписаться
Яндекс.Метрика