Восстановление данных в Linux: TESTDISK и PHOTOREC
- Введение
- TESTDISK и PHOTOREC
- R-LINUX и R-STUDIO
- [[RU/common/data_handling/data_recovery_on_linux/r-linux|RU/common/data handling/data recovery on linux/r-linux]]
- [[RU/common/data_handling/data_recovery_on_linux/foremost|RU/common/data handling/data recovery on linux/foremost]]
- [[RU/common/data_handling/data_recovery_on_linux/other_programs|RU/common/data handling/data recovery on linux/other programs]]
- [[RU/common/data_handling/data_recovery_on_linux/create_a_bootable_usb_drive|RU/common/data handling/data recovery on linux/create a bootable usb drive]]
- [[RU/common/data_handling/data_recovery_on_linux/conclusion|RU/common/data handling/data recovery on linux/conclusion]]
TESTDISK и PHOTOREC
Краткое описание
Первой программой, которую мы рассмотрим, будет набор TestDisk, состоящий из трёх утилит:
- первая утилита — TestDisk — умеет исправлять таблицы разделов, восстанавливать удалённые разделы, восстанавливать удалённые файлы с разделов FAT, NTFS и EXT2 (будем надеяться, что появится поддержка и других файловых систем), копировать файлы с удалённых разделов FAT, NTFS, EXT2/3/4, а также проводить операции над разделами FAT, NTFS, EXT2/3/4 и т.д. (исправлять загрузочные сектора, восстанавливать MFT и суперблоки из резервных копий);
- вторая утилита — PhotoRec — позволяет восстанавливать данные практически с любых носителей и любых файловых систем, даже повреждённых, но только в режиме RAW;
- третья утилита — FIdentifi — является дополнением к PhotoRec, она позволяет определить более точно форматы восстановленных файлов, а также показывает, сможет ли программа PhotoRec восстанавливать файлы тех форматов, с которыми та изначально незнакома, но их сигнатуры были добавлены пользователем вручную.
ПРИМЕЧАНИЕ: | |
Хотя программа является бесплатной, вы можете поддержать автора материально для дальнейшего развития проекта. Достаточно перевести на счёт автора любую сумму, которую сочтёте нужной, с пластиковых карт Visa, MasterCard и т. д. при помощи платёжной системы PayPal. |
Программа TestDisk не только полностью бесплатная, но и мультиплатформенная, и работает в нескольких системах: Windows, Linux, FreeBSD, MacOS, DOS и SunOS. Плюс она не требует установки, достаточно скачать архив с готовыми исполняемыми файлами, распаковать его и запустить нужную утилиту, а также доступна в виде исходников, которые можно скомпилировать чисто под свою систему.
Наиболее правильным вариантом является установка программы из репозиториев, но на момент написания статьи в репозиториях Debian и Ubuntu находилась более старая версия 6.11 от апреля 2009 г., в которой некоторые функции отсутствуют (например, утилита FIdentify). Как известно, прогресс не стоит на месте, и в новые версии программы добавляется функционал и устраняются найденные ошибки, поэтому я всё-таки предпочёл последнюю стабильную версию. В виде готовых DEB-пакетов она пока что недоступна, и в идеальном случае её нужно скомпилировать и создать DEB-пакет под свою систему. Но поскольку передо мной стояла задача в первую очередь изучить саму программу, я не стал делать лишних телодвижений и взял архив с готовыми бинарными файлами с официального сайта.
Несмотря на то, что программа консольная, в отличие от большинства утилит под Linux, которые работают только через командную строку с ключами, в ней присутствует диалоговое окно с настройками, как в DOS. Но мышка в ней всё-таки не работает и все действия производим только с клавиатуры. При желании утилиту PhotoRec отдельно можно скомпилировать с графической оболочкой на Qt командой
./configure --enable-qt && make
Но оболочка пока ещё неработоспособна.
Последняя стабильная ( на момент написания статьи — 6.13 от 15.11.2011г.) и тестовая (6.14 WIP) версии программы доступны на официальном сайте.
Более старые версии можно установить из репозиториев вашей системы.
Сначала выполним подготовительную операцию: создадим каталог, в который будут сохраняться восстановленные данные. Каталог обязательно должен располагаться на другом носителе! Если вы будете сканировать флэшку, то на жёстком диске в домашнем каталоге пользователя создаём папку с именем латинскими буквами, например, recovery (чтобы было понятно).
Итак, скачиваем архив с программой в домашний каталог:
wget http://www.cgsecurity.org/testdisk-6.13.linux26.tar.bz2
Распаковываем:
tar xjf ~/testdisk-6.13.linux26.tar.bz2
TestDisk
Сначала рассмотрим первую утилиту — TestDisk, которая позволяет восстанавливать недавно удалённые файлы и повреждённые таблицы разделов, создавать образы дисков или разделов. Запускается она командой
sudo ~/testdisk-6.13/testdisk_static
Если нужно поработать с образом диска, то команда запуска будет выглядеть так:
sudo ~/testdisk-6.13/testdisk_static /<path_to_folder>/disk_image.dd
Откроется диалоговое окно в консоли, в котором программа задаст вопрос по поводу лог-файла, и предложит 3 варианта ответа: Create — создать новый лог-файл, Append — дописывать все данные в существующий лог-файл, No Log — не записывать лог-файл. Я выбрал третий вариант.
Далее при помощи клавиш ↑ и ↓ нужно выбрать диск, с которым мы будем работать, затем установить курсор на Proceed и нажать клавишу ↵ Enter . Вернуться в предыдущее окно можно нажатием клавиши q .
Если мы работаем с жёстким диском, то на следующем шаге появится о нём более подробная информация, здесь просто щёлкаем Continue .
Появится список типов таблиц разделов, которые могут быть применены на диске. Программа автоматически определяет таблицу разделов и выставляет курсор на нужную строку, но можно указать тип таблицы вручную: для обычных компьютеров на дисках до 2ТБ с установленной Windows/DOS/Linux и флэшек выбираем тип Intel, для компьютеров с дисками свыше 2ТБ, а также Apple Macintosh на процессоре Intel — EFI GPT, для старых версий Macintosh на процессорах PowerPC — Mac и т. д. Если вы не знаете, какой тип таблицы применён на вашем диске, выбирайте None.
Теперь нам откроется список меню:
- Analyze — анализ текущей структуры диска и поиск удалённых разделов;
- Advanced — различные утилиты для файловых систем (восстановление недавно удалённых файлов, создание образа раздела, работа с заголовками файловых систем и т.д.);
- Geometry — изменение геометрии диска;
- Options — дополнительные настройки программы.
Если на предыдущем шаге была выбрана разметка Intel, то будут доступны дополнительные меню:
- MBR Code — запись нового кода первичного загрузчика и сигнатуры MBR в первый сектор диска (функция может быть полезна, если система не загружается, а другие способы решения проблемы не помогают);
- Delete — полное удаление всех данных (обнуляется таблица разделов в главной загрузочной записи).
В меню Geometry мы сможем задать дополнительные значения параметров диска: количество цилиндров (Cylinders), головок (Heads), число секторов на дорожку (Sectors) и размер сектора (Sector Size). Эту функцию имеет смысл применять, если нарушена геометрия жёсткого диска и восстановление таблиц разделов стандартными способами результатов не приносит. Например, программа TestDisk не обнаруживает разделы, в этом случае перезапускаем программу с включенной настройкой Dump в меню Options, анализируем полученную информацию и вручную указываем правильную геометрию диска, затем вновь сканируем диск на предмет потерянных разделов и в случае успеха восстанавливаем их уже с правильной геометрией. Эта функция не меняет параметров диска до тех пор, пока не будет выполнена запись найденных разделов на диск, поэтому пользоваться ею нужно очень аккуратно: неправильно заданная геометрия может до конца добить таблицу разделов.
А вообще, чтобы быть готовым к любым поворотам событий, перед каким-либо действиями над разделами нужно обязательно сохранять резервную копию текущей таблицы разделов.
В меню Options производим настройки перед сканированием:
- Expert Mode — режим эксперта; в этом режиме включаются дополнительные возможности (какие именно, я пока что не нашёл); по умолчанию стоит No, можно так и оставить;
- Cylinder boundary — считать, что границы разделов совпадают с началом цилиндров; по умолчанию настройка включена, но если жёсткий диск повреждён и программа ничего не находит, то попробуйте поставить No и повторить сканирование;
- Allow partial last cylinder — считать, что последний цилиндр может быть неполным; по умолчанию выключена, но если жёсткий диск «посыпался» и в результате таблица разделов повреждена, то лучше включить;
- Dump — отображать содержимое "подозрительных" секторов; по умолчанию выключена; можно так и оставить, но в некоторых случаях, когда требуется дополнительная информация, она бывает полезной.
Теперь более подробное описание основных меню, ради которых всё и затевалось. Сначала остановимся на меню Analyze, позволяющем просканировать диски на предмет потерянных разделов, восстановить их, скопировать файлы с повреждённых или удалённых разделов без восстановления их таблицы, а также исправить геометрию диска. Итак, в списке меню выбираем Analyze, и программа покажет текущие разделы на диске, которые пока что доступны (хочу заострить внимание на словах «пока что»), а также два режима сканирования. Рекомендую использовать второй режим — Backup — с предварительным сохранением резервной копии таблицы (она сохранится в домашнем каталоге в файле backup.log), но если вы уверены в своём профессионализме, то можете выбрать первый режим Quick Search («быстрый поиск). Перед сканированием программа может задать вопрос: «Should TestDisk search for partition created under Vista?» («Искать разделы, созданные под Windows Vista?»). Если вы не используете Windows Vista или Windows 7, щёлкайте N («нет»), если же вы не знаете, как ответить, щёлкайте Y («да»).
Программа начнёт сканировать диск на предмет поиска разделов. Процесс этот долгий, в зависимости от объёма и скорости работы диска может занять до нескольких часов, так что пока можно попить чаю, перекусить бутерброд, понаблюдать за процессом сканирования, погулять с собакой и т.д. Если программе что-то не понравится, она будет выдавать предупреждения, которые мы либо принимаем на свой счёт и устраняем, либо просто проигнорируем. В любой момент сканирование можно прервать, щёлкнув Stop .
По окончании сканирования программа выведет список найденных разделов. В этот момент будьте очень внимательны прежде, чем что-то изменять: программа может показать даже те разделы, которые когда-то присутствовали на диске, но давно были удалены.
В начале каждой строки с разделом будет стоять буква, которая обозначает его характеристику:
- P — первичный,
- L — логический,
- E — дополнительный,
- D — удалённый,
- знак * — загрузочный.
Клавишей стрелки → / ← , в случае необходимости, изменяем характеристику раздела.
Также можно добавить раздел вручную, нажав клавишу а . Это помогает в том случае, если программа не нашла удалённый раздел, но мы уверены, что он должен быть. Но чтобы его добавить, нужно абсолютно точно знать его характеристики: тип файловой системы, стартовое и конечное значение цилиндров, головок или сектора, так что этой функцией смогут воспользоваться только профессионалы.
Если имеется сохранённая копия таблицы разделов (файл backup.log, расположенный в домашнем каталоге пользователя), то её можно восстановить, нажав клавишу L .
Чтобы задать другой тип файловой системы раздела, выбираем раздел и нажимаем клавишу t , затем запоминаем из списка буквенно-цифровое обозначение нужной файловой системы и щёлкаем Proceed , а затем вводим его. Это бывает необходимо в тех случаях, когда программа неправильно определила тип файловой системы раздела, и у нас есть возможность указать правильный вариант.
А вот теперь самое интересное: нажав клавишу p на выбранном разделе (даже ещё не восстановленном!), мы можем посмотреть файлы и папки, которые на нём были записаны, и скопировать их в отдельный каталог. Управление в этом меню описано чуть ниже (функция Undelete в меню Advanced).
Когда предварительные работы с найденными таблицами разделов закончены, нажимаем ↵ Enter , и на следующем шаге можем либо записать новую таблицу разделов, щёлкнув Write , либо провести детальное сканирование, щёлкнув Deeper Search . В этом режиме программа более тщательно сканирует диск, и может найти такие разделы, о которых вы даже не подозревали, но время проверки как правило достигает нескольких часов. По окончании нужно для каждого раздела вручную установить характеристики, и если нас всё устраивает, записать новую таблицу.
Когда работа с программой закончена и разделы восстановлены, закрываем программу корректно, нажав несколько раз клавишу q .
Теперь заглянем внутрь второго меню — Advanced, позволяющее восстановить недавно удалённые файлы, создать образ раздела или всего диска, поработать с заголовками файловых систем: для FAT и NTFS это Boot Sector (загрузочный сектор), для EXT2/3/4 — Superblock, для BSD — Disklabel (метка диска) и т.д. В списке меню ставим курсор на Advanced и нажимаем клавишу ↵ Enter , и программа как всегда покажет список доступных разделов, но в этом режиме работа с ними более безопасна, чем в предыдущем Analyze.
Сначала самая интересная функция, которая позволяет восстановить недавно удалённые файлы — Undelete. Она доступна для разделов FAT, NTFS и EXT2, причём на разделах NTFS и EXT2 можно восстанавливать только файлы, но с сохранением абсолютного пути, а на разделах FAT восстанавливаются и файлы, и папки. Итак, устанавливаем курсор на раздел, с которого надо восстановить файлы, и щёлкаем Undelete . Откроется список файлов и папок, где удалённые элементы будут помечены красным цветом (на разделах NTFS и EXT2 будут показаны только файлы с полными путями их первоначального местоположения). Управление в этом меню такое: клавиша → или пробел — войти в папку, ← — выйти из неё, h — скрыть/показать удалённые файлы и папки; ⇧ Shift + ; — выбрать файл для восстановления; a — выбрать все файлы для восстановления; ⇧ Shift + c — восстановить выбранные файлы и папки; c — восстановить все файлы и папки; q — выход. Все горячие клавиши работают только в английской раскладке клавиатуры. На этом шаге вскрылся один из недостатков программы: имена файлов и папок, содержащих русские буквы, отображаются в виде «кракозябров», но если на разделах NTFS и EXT2 это пол-беды (имена лишь некорректно отображаются, и то частично, а восстанавливаются нормально), то на разделах FAT это просто беда (имена и отображаются, и восстанавливаются некорректно). Если нужно восстановить один файл или папку, устанавливаем на него курсор, нажимаем ⇧ Shift + ; и, затем, ⇧ Shift + c .
Затем нужно выбрать место, куда будут сохраняться восстановленные файлы. Автоматически откроется каталог с программой TestDisk, чтобы перейти на уровень выше, выбираем строку с двумя точками. Когда наконец открыли нужный каталог, для подтверждения нажимаем клавишу c . По завершении копирования появится надпись зелёными буквами «Copy done!», что свидетельствует об удачном восстановлении.
Чтобы завершить работу и корректно выйти из программы, несколько раз нажимаем клавишу q .
Теперь перейдём к другим функциям меню Advanced.
Здесь есть ещё одна интересная функция — List, позволяющая просмотреть и скопировать файлы и папки. По идее она должна выводить только доступные элементы, но вместе с ними отображаются и удалённые, правда как-то странно: на разделе NTFS удалённые файлы не выделились никак, на EXT3 и EXT4 часть файлов и папок была помечена красным, но среди них оказались не только удалённые, но и существующие, доступные из проводника; и только на флэшке с файловой системой FAT удалённые данные корректно выделились красным цветом. Но не обольщайтесь: попытки восстановить их никаких результатов не принесут, файл восстановится, но с нулевым или неправильным размером, в итоге он будет нечитаем, а если вы восстанавливаете папку, то она будет пустой. Управление такое же, как и в меню Undelete. Хочется заметить, что функция List несколько раз дублируется в других меню, например, в Boot и встроенном в него Rebuild BS (доступны при работе с разделами FAT и NTFS).
Функция Type позволяет изменить тип файловой системы какого-либо раздела без сохранения на диск. Это пригодится, если раздел был переформатирован в другую файловую систему (например, из NTFS в EXT3) и из него нужно вытащить файлы и папки, используя инструменты для работы с NTFS, когда другие способы не помогают.
Если нужно создать образ какого-либо раздела, ставим на него курсор и запускаем Image Creation , далее выбираем каталог, куда этот образ будет записываться, и на выходе получаем файл image.dd. Но это дело лучше поручить утилитам dd или ddrescue.
У разделов с файловыми системами EXT2/EXT3/EXT4 можно восстановить суперблок, для этого выбираем нужный раздел и щёлкаем Superblock ; программа выполнит поиск резервной копии суперблока и восстановит из неё. В самом низу есть приписка, что альтернативным методом восстановления суперблока файловой системы является команда
fsck.ext4 -p -b superblock -B blocksize device
Для разделов FAT и NTFS возможна работа с загрузочными секторами: устанавливаем курсор на раздел и щёлкаем Boot . Здесь нам доступны следующие меню:
- List — просмотр и копирование файлов и папок на разделе;
- Rebuild BS — восстановление загрузочного сектора;
- Repair MFT — проверка и восстановление MFT на разделах NTFS;
- Dump — сохранение и восстановление загрузочного сектора (как ни странно, эта же функция оказалась продублирована в меню Rebuild BS).
Для тех, кто не в курсе: MFT (master file table) — главная файловая таблица (база данных), в которой хранится информация о содержимом тома с файловой системой NTFS; MFT можно интерпретировать как файл с таблицей, в которой строки которой соответствуют файлам тома, а столбцы — их атрибутам.
Когда работы над жёстким диском закончены, корректно выходим из программы, нажав несколько раз q , остаётся только перезагрузить компьютер и посмотреть результат.
После того, как разделы восстановлены, необходимо проконтролировать разметку диска:
sudo fdisk -l /dev/sdX
Здесь проверьте, чтобы последний цилиндр предыдущего раздела был обязательно меньше начального цилиндра следующего, и цилиндр последних разделов (расширенного и находящегося в нём логического) не должен превышать последнего цилиндра самого диска. Исправить разметку раздела можно по разному, но сначала обязательно делаем резервную копию разметки:
sudo dd if=/dev/sdX of=table1.hdd bs=1 count=66 skip=446
В случае необходимости она восстанавливается командой
sudo dd if=table1.hdd of=/dev/sdX bs=1 count=66 seek=446
Теперь возможные способы поправить разметку:
- исправить цилиндры раздела вручную:
sudo sfdisk -f -NY /dev/sdXВ
в этой команде X — порядковая буква диска в системе, Y — порядковый номер раздела, который нужно поправить. Далее нужно ввести значение начального цилиндра раздела и через пробел его правильный размер, равный разности значений максимально допустимого цилиндра и начального цилиндра; нажимаем ↵ Enter . - выгрузить текущую разметку в файл, исправить её вручную и закачать обратно:
sudo sfdisk -d /dev/sda > sda.out
sudo fdisk /dev/sda < sda.out
После выгрузки разметки в файл открываем его в любом редакторе, правим нужные строки, высчитав необходимые параметры, а загружаем обратно.
В параметрах первая цифра обозначает начальный сектор раздела, вторая — размер раздела в секторах (правильный размер раздела можно вычислить, умножив значение максимально допустимого цилиндра на 16065 и затем вычтя значение первого сектора раздела, результат уменьшаем на единицу).
После таких манипуляций может потребоваться восстановление загрузочных секторов исправленных разделов при помощи TestDisk.
Некоторые более наглядные примеры восстановления доступны на страницах официального сайта в документации к программе (частично на русском языке): TestDisk шаг за шагом и Примеры восстановления данных.
Описание подготовлено с использованием материалов на сайте linuxcenter.ru.
PhotoRec
Если программа TestDisk не справилась с восстановлением данных, то на помощь нам придёт другая — PhotoRec. Она поможет восстановить файлы практически с любых файловых систем и любых носителей, даже повреждённых, но к сожалению не сохраняет исходных имён и структур каталогов.
Запускаем PhotoRec из каталога с программой командой
sudo ~/testdisk-6.13/photorec_static
Если нужно поработать с образом диска, то команда запуска будет выглядеть так:
sudo ~/testdisk-6.13/photorec_static /<path_to_folder>/disk_image.dd
Точно также, как и в предыдущей утилите TestDisk, откроется диалоговое окно, где выбираем диск и щёлкаем Proceed . При работе с жёстким диском на следующем шаге появится более подробная информация о нём. Щёлкаем Continue , и далее откроется список типов таблиц разделов, в котором можно либо оставить вариант, предложенный программой, либо выбрать свой.
А вот дальше мы попадаем в диалоговое окно со списком доступных разделов на диске и настройками режимов сканирования. Попробуем настроить программу. Сначала заходим в меню File Opt и указываем тип восстанавливаемых файлов. По умолчанию галочки стоят почти на всех строках, но если нужно какую-то галочку снять или поставить, клавишей стрелки ↓ или ↑ становимся на нужную позицию и нажимаем пробел либо стрелку → или ← . Чем меньше галочек будет включено, тем меньше в процессе восстановления вы получите «мусора». Чтобы пометить или убрать все форматы одновременно, нажимаем клавишу s , для сохранения настроек — клавишу b . По окончании выходим в основное меню через Quit.
- Небольшое отступление: утилита распознаёт файлы более 350 форматов, но существует также возможность добавить вручную свои, для этого в корне каталога с программой создаём файл с именем photorec.sig, далее открываем его в редакторе и в каждой строке прописываем нужные форматы файлов; строка должна иметь вид
- <расширение> <смещение сигнатуры> <сигнатура> или <магическое значение>
- Смещение сигнатуры по умолчанию равно 0. «Магическое значение» (или MagicValue) может содержать:
- строку, например, "data", при этом специальные символы могут быть выделены как "\b", "\n", "\r", "\t", "\0" или "\\";
- данные в шестнадцатеричном HEX-формате, например, 0x12, 0x1234, 0x123456 и т. д.; обратите внимание, что записи 0x123456, 0x12 0x34 0x56 и 0x12, 0x34, 0x56 являются эквивалентами.
- Разделители «пробел» или «запятая» игнорируются.
- Пример: нужно добавить формат PFI, для этого берём тестовый файл и смотрим его сигнатуру в HEX-редакторе командой:
- hexdump -C ~/sample.pfi | head
- Вывод будет таков:
00000000 50 68 6f 74 6f 46 69 6c 74 72 65 20 49 6d 61 67 |PhotoFiltre Imag| 00000010 65 03 40 06 00 00 b0 04 00 00 40 19 01 00 40 19 |e.@.......@...@.| 00000020 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- Теперь в файл photorec.sig прописываем строку в виде:
- pfi 0 "PhotoFiltre Image"
- или
- pfi 0 "PhotoFiltre", 0x20, "Image"
- Для того, чтобы дополнительные форматы могли быть использованы, в меню File Opt должен стоять флаг Own сustom signatures (по умолчанию он уже установлен).
- Также можно внести нужные форматы файлов в исходники перед компиляцией, но это уже более сложная процедура.
Вернёмся теперь к программе и продолжим настраивать дальше. Входим в меню Options и настраиваем режимы сканирования: режим Paranoid позволяет восстановить файлы, которые программа не опознала, поэтому настройку Paranoid: Yes (Brute force disabled) рекомендую оставить как есть; если есть желание восстановить фрагментированные JPEG-файлы, то выставляем Brute force enabled , но не факт, что они потом корректно откроются, а вот нагрузка на процессор и время сканирования диска ощутимо возрастёт; при настройке Paranoid: No программа будет восстанавливать только файлы, указанные в настройках меню File Opt.
Опция Allow partial last cylinder определяет, какая примерно была геометрия диска, но её имеет смысл включать только в том случае, когда сканируется диск с повреждённой геометрией, таблицей разделов или без них вообще.
Опция Keep corrupted files позволяет сохранить файлы, скопированные из повреждённой области диска, которые потом можно попытаться восстановить при помощи других программ, поэтому рекомендую её включить.
Если у вас на компьютере мало оперативной памяти и программа во время восстановления вылетает с ошибкой либо зависает, то включите опцию Low memory . Хотя на современных компьютерах это и не пригодится.
Также можно включить экспертный режим, установив Expert mode: Yes , и тогда в настройках откроется дополнительное меню Geometry, где мы сможем указать дополнительные данные о сканируемом диске: количество цилиндров (Cylinders), головок (Heads), число секторов на дорожку (Sectors) и размер сектора (Sector Size). По умолчанию программа принимает размер блока равным 512 байт, что повысит точность восстановления, но замедляет общий процесс. Как правило некоторые из этих параметров определяются автоматически, но если правильно указать размер кластера (в файловых системах NTFS по умолчанию он равен 4096 байт), то это повысит скорость сканирования, но повлияет на точность восстановления (многие файлы могут оказаться битыми). В большинстве случаев эта опция не сильно требуется, поэтому лучше её отключить, дабы потом программа не задавала лишних вопросов.
Теперь, когда настройки закончены, указываем из списка нужный раздел диска и щёлкаем Search . Если хотите просканировать весь диск полностью, то выбирайте самую верхнюю строку No partition . Далее откроется диалог выбора файловой системы раздела. Как всегда программа автоматически установит курсор на нужную строку, но можно указать и вручную: для разделов с файловой системой EXT2/EXT3/EXT4 выбираем ext2/ext3, для всех остальных — Other.
Если на предыдущем этапе указали конкретный раздел диска, то на следующем нужно выбрать один из двух вариантов сканирования: вариант Whole позволяет просканировать весь раздел целиком, но при этом время восстановления увеличится, а в общую кучу будут сохранены те данные, которые и так доступны через проводник или файловый менеджер; вариант Free сканирует только пустую область раздела, в итоге время работы уменьшается и восстанавливаются только удалённые файлы. Для сильно повреждённого раздела используйте вариант Whole, а когда раздел исправен и нужно побыстрее восстановить недавно удалённые файлы, выбирайте Free.
Затем указываем место, куда будут сохраняться восстановленные файлы. Автоматически откроется каталог с программой TestDisk. Чтобы перейти на уровень выше, выбираем строку с двумя точками. Когда указали нужный каталог, для подтверждения нажимаем клавишу c . Начнётся сканирование.
Если в настройках программы был включен режим Expert Mode, то во время сканирования программа задаст ещё несколько вопросов. Сначала программа спросит: «Try to unformat a FAT filesystem?» («Попытаться восстановить файловую систему FAT?»). При нажатии y (ответ "да") программа просканирует раздел на предмет структуры папок (лично мне в экспериментах с флэшками это никак не помогло, поэтому в дальнейшем я нажимал n ).
Если мы в режиме эксперта оставили настройки в разделе Geometry по умолчанию, то на следующем шаге программа попросит указать размер блока. Хотя стандартный размер блока для жёстких дисков равен 4096 байт, но я рекомендую выбрать 512 байт, тогда есть вероятность, что повреждённые файлы будут точнее восстановлены.
На следующем шаге нужно указать смещение. По умолчанию оставляем 0, но если программа не нашла ни одного файла, то необходимо вычислить нужное смещение, и повторить сканирование. Клавишами стрелок ↑ и ↓ ищем нужный вариант и нажимаем ↵ Enter .
Пока продолжается сканирование, можно пойти попить чаю, погулять с собакой и т. д.
В программе предусмотрена возможность прервать сканирование щёлкаем на Stop , но при следующем запуске она выдаст запрос на продолжение сканирования.
И снова этот Expert Mode: если он был включен, то по окончании работы программа предложит создать файла образа диска, в котором будут сохранены все нераспознанные данные. Этот образ потом можно подмонтировать в файловую систему и поработать с ним отдельно («можно» не значит «получится»). Если есть желание попытаться ещё что-то «выжать», то нажимаем Y , и в корне каталога с восстановленными файлами появится файл образа диска image_remaining.dd, Правда как «выжать» из этого файла что-то ещё, я так и не понял: при подключении этого файл в качестве блочного устройства командой
sudo losetup -fv ~/recovery/image_remaining.dd
он «прыгнул» на первое свободное устройство /dev/loop0, но вывод команды
fdisk -l /dev/loop0
показал, что на диске нет таблицы разделов, а следовательно мы ничего, кроме воздуха, не сможем подмонтировать в нашу систему. Остаётся только один вариант: натравить на этот образ другую программу восстановления с надеждой, что она хоть чего-нибудь ещё найдёт.
Теперь корректно выходим из программы, нажимая в каждом окне клавишу q или выбирая опцию Quit (иначе мы не сможем поработать с разделом, пока компьютер не будет перезагружен).
FIdentify
В комплекте TestDisk есть ещё третья утилита — FIdentify, позволяющая провести идентификацию форматов файлов на предмет распознавания их программой PhotoRec. Это бывает полезно, например, когда мы добавляем форматы файлов вручную и необходимо проверить, насколько корректно это сделано. Также её можно использовать для определения форматов файлов в других случаях, например, когда ScanDisk из Windows после сканирования файловой системы насоздавал кучу файлов CHK. Запускаем утилиту командой
sudo ~/testdisk-6.13/fidentify_static ~/recovery
И, наконец, заходим в наш каталог с восстановленными файлами, чистим его от лишнего мусора и любуемся результатом. Можно при помощи нехитрых команд рассортировать файлы по папкам, например, перенесём все файлы TXT в одну папку с тем же именем, но расположенной вне recovery, (иначе команда рекурсивно зациклится); в нашем случае папка txt будет располагаться в корне домашнего каталога пользователя:
mkdir ~/txt && find ~/recovery -type f -name "*.txt*" -exec mv -i {} ~/txt \;
Результаты работы и общая оценка
Режим «по умолчанию»: все настройки оставлены как есть, из списка был выбран единственный раздел на флэшке, вариант сканирования — Free.
- Флэшка №1: утилита TestDisk при попытке использования функции Undelete никаких файлов на флэшке не нашла. Утилита PhotoRec работала примерно 7 минут, по окончании сканирования выдала сообщение, что восстановлено 512 файлов; в каталоге RECOVERY программа создала 2 папки: recup_dir.1 и recup_dir.2. Поскольку на флэшке перед форматированием было действительно две папки, то логично предположить, что после восстановления программа автоматически скопировала каждый файл в нужный каталог. На самом деле в первой папке было 1001 файл, во второй — 24, причём половина файлов оказались побочным «мусором»: это были те же самые фотографии, только в маленьком разрешении, а также файл отчёта report.xml. «Мусор» оказалось вычислить довольно просто: во-первых, имена побочных файлов начинались на букву t*, а нормальных — на букву f*, а во-вторых побочные файлы имели маленький размер, всего лишь несколько десятков килобайт (файлы фотографий были размером от 2,5МБ). После очистки в первой папке оказалось 500 файлов, во второй — 12. Навскидку несколько восстановленных файлов были сопоставлены с оригиналом: размеры совпали, в свойствах фотографий сохранились все данные (каким фотоаппаратом сделана фотографии, в каком режиме, время создания и т. д.). При просмотре повреждённых фотографий не найдено.
- Флэшка №2: при использовании утилиты TestDisk ситуация аналогична с флэшкой №1; утилита PhotoRec работала 10 минут 45 секунд, по окончании программа выдала сообщение, что восстановлено 149816 файлов (из них примерно 147000 — файлы TXT, выдранные из файлов баз данных Firebird, которые присутствовали на флэшке); в каталоге RECOVERY создано 300 папок. Первоначальные имена не сохранились практически ни у одного файла, у некоторых EXE, DLL, архивов ZIP и TAR.GZ имена сохранились лишь частично. Среди восстановленных данных обнаружены даже те, которые давным-давно удалены. Некоторые документы, архивы и исполняемые файлы EXE были испорчены и не открывались. Файлы определённых форматов, например, образы ISO, восстановлены не были.
- Диск DVD-RW: восстановлены 18 из 21 файлов AVI. Вместе с файлами AVI в папке было 26 MP3 (интересно, откуда?), но длительностью 1 секунда (отдельные фрагменты звуков, выдранные из разных мультфильмов). Лишние файлы удалены, оставшиеся сопоставлены с оригиналом: все восстановленные файлы совпали с оригинальными и корректно открывались.
Теперь о достоинствах и недостатках: поскольку TestDisk — это не одна программа, а набор из трёх утилит, то оцениваться будет весь комплекс в целом.
ДОСТОИНСТВА
- утилита PhotoRec прекрасно справляется с восстановлением фотографий, рисунков, документов; основная масса восстановленных фотографий, да и других файлов тоже, сохранились практически в «первозданном» виде;
- утилита PhotoRec не зависит от файловой системы и работает практически с любым носителем, будь то флэшка, жёсткий диск, компакт-диск, дискета и т. д., или даже «голый» жёсткий диск без таблицы разделов или образ диска;
- даже если PhotoRec не распознала какие-либо данные, при включении определённой опции она их сохранит в отдельный файл образа диска, с которым потом можно поработать отдельно;
- PhotoRec распознаёт файлы более 350 форматов; есть возможность добавить дополнительные форматы вручную;
- у программы PhotoRec в режиме RAW довольно неплохая эффективность работы;
- несмотря на то, что программа — консольная, во время сканирования наглядно показываются результаты восстановления, а также процент выполнения;
- программа TestDisk умеет работать не только с обычными дисками, но и RAID-массивами;
- программа TestDisk прекрасно справляется с исправлением таблиц разделов и восстановлением потерянных разделов диска, распознаёт типы очень многих файловых систем, начиная с Windows и заканчивая экзотическим BeOS (иногда к потере данных приводят неудачные операции по переразметке жёсткого диска, и здесь эта функция очень кстати).
НЕДОСТАТКИ
- в утилите TestDisk применение функции Undelete бессмысленно, если раздел или носитель был очищен даже в режиме «быстрого» форматирования;
- при восстановлении оригинальных имён файлов и папок при помощи утилиты TestDisk есть проблемы с кириллицей на разделах FAT;
- если нужно восстановить недавно удалённые файлы с сохранением имён, то это можно сделать утилитой TestDisk только с разделов FAT, NTFS и EXT2, другие файловые системы пока не поддерживаются;
- утилита PhotoRec не сохраняет имена файлов и структуры каталогов (частично сохраняются имена только у очень небольшого количества файлов: EXE, DLL, некоторых архивов ZIP и TAR.GZ), поэтому после восстановления все файлы придётся переименовывать и копировать в нужные папки вручную;
- утилита PhotoRec сразу восстанавливает все найденные файлы без предварительного просмотра, поэтому вместе с нужными данными восстанавливается довольно много «мусора», который потом приходится чистить вручную;
- все восстановленные файлы сваливаются по папкам в одну кучу, нет сортировки по типу файлов, что ещё больше осложняет удаление «мусора».
ДЛЯ ЧЕГО ПОДОЙДЁТ ПРОГРАММА
- восстановление повреждённых таблиц разделов практически любых файловых систем;
- создание образа раздела или всего диска при условии целостности носителя;
- восстановление случайно удалённых файлов с сохранением оригинальных имён с исправных разделов FAT, NTFS и EXT2;
- восстановление данных (документов, фотографий, архивов и т.д.) с любых файловых систем и носителей (жёсткие диски, флэшки, компакт-диски, дискеты и т. д.), даже при повреждении или форматировании в «быстром» режиме, но без сохранения оригинальных имён файлов и структуры папок, когда важно восстановить сам файл, а его первоначальное имя и местоположение не имеют значения.
ДЛЯ ЧЕГО НЕ ПОДХОДИТ ПРОГРАММА
- восстановление недавно удалённых файлов с сохранением оригинального имени и структуры папок с файловых систем, отличных от FAT, NTFS и EXT2;
- восстановление данных с повреждённых разделов, например, очищенных путём «быстрого» форматирования, если требуется сохранить оригинальные имена файлов и структуру папок (например, базы данных 1С 7.7).
ВЫВОД
- Из бесплатных программ является одним из самых мощных инструментов для работы с жёстким диском и восстановления данных с любых носителей;
- вероятность восстановления удалённых файлов с сохранением имён и структуры папок с разделов FAT, NTFS и EXT2 есть только в том случае, если разделы не были отформатированы, в противном случае данные придётся восстанавливать в режиме RAW;
- если бы полностью устранить проблемы с кириллицей и сохранением имён файлов и структуры папок, то программа стала бы лучшей среди всех.