Восстановление данных в Linux: TESTDISK и PHOTOREC

From Wiki
Jump to navigationJump to search
Book.png




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


Теперь возможные способы поправить разметку:

  1. исправить цилиндры раздела вручную:
    sudo sfdisk -f -NY /dev/sdXВ
    в этой команде X — порядковая буква диска в системе, Y — порядковый номер раздела, кото­рый нужно поправить. Далее нужно ввести значение начального цилиндра раздела и через пробел его правильный раз­мер, равный разности значений максимально допустимого цилиндра и начального цилиндра; нажи­маем  ↵ Enter .
  2. выгрузить текущую разметку в файл, исправить её вручную и закачать обратно:
    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) может со­держать:
  1. строку, например, "data", при этом специальные символы могут быть выделены как "\b", "\n", "\r", "\t", "\0" или "\\";
  2. данные в шестнадцатеричном 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 — это не одна программа, а набор из трёх утилит, то оцениваться будет весь комплекс в целом.

ДОСТОИНСТВА

  1. утилита PhotoRec прекрасно справляется с восстановлением фотографий, рисунков, докумен­тов; основная масса восстановленных фотографий, да и других файлов тоже, сохранились практи­чески в «первозданном» виде;
  2. утилита PhotoRec не зависит от файловой системы и работает практически с любым носи­телем, будь то флэшка, жёсткий диск, компакт-диск, дискета и т. д., или даже «голый» жёсткий диск без таблицы разделов или образ диска;
  3. даже если PhotoRec не распознала какие-либо данные, при включении определённой опции она их сохранит в отдельный файл образа диска, с которым потом можно поработать отдельно;
  4. PhotoRec распознаёт файлы более 350 форматов; есть возможность добавить дополнительные форматы вручную;
  5. у программы PhotoRec в режиме RAW довольно неплохая эффективность работы;
  6. несмотря на то, что программа — консольная, во время сканирования наглядно показываются результаты восстановления, а также процент выполнения;
  7. программа TestDisk умеет работать не только с обычными дисками, но и RAID-массивами;
  8. программа TestDisk прекрасно справляется с исправлением таблиц разделов и восстановлени­ем потерянных разделов диска, распознаёт типы очень многих файловых систем, начиная с Windows и заканчивая экзотическим BeOS (иногда к потере данных приводят неудачные операции по переразметке жёсткого диска, и здесь эта функция очень кстати).

НЕДОСТАТКИ

  1. в утилите TestDisk применение функции Undelete бессмысленно, если раздел или носитель был очищен даже в режиме «быстрого» форматирования;
  2. при восстановлении оригинальных имён файлов и папок при помощи утилиты TestDisk есть проблемы с кириллицей на разделах FAT;
  3. если нужно восстановить недавно удалённые файлы с сохранением имён, то это можно сде­лать утилитой TestDisk только с разделов FAT, NTFS и EXT2, другие файловые системы пока не поддерживаются;
  4. утилита PhotoRec не сохраняет имена файлов и структуры каталогов (частично сохраняются имена только у очень небольшого количества файлов: EXE, DLL, некоторых архивов ZIP и TAR.GZ), поэтому после восстановления все файлы придётся переименовывать и копировать в нужные папки вручную;
  5. утилита PhotoRec сразу восстанавливает все найденные файлы без предварительного просмот­ра, поэтому вместе с нужными данными восстанавливается довольно много «мусора», который по­том приходится чистить вручную;
  6. все восстановленные файлы сваливаются по папкам в одну кучу, нет сортировки по типу файлов, что ещё больше осложняет удаление «мусора».

ДЛЯ ЧЕГО ПОДОЙДЁТ ПРОГРАММА

  1. восстановление повреждённых таблиц разделов практически любых файловых систем;
  2. создание образа раздела или всего диска при условии целостности носителя;
  3. восстановление случайно удалённых файлов с сохранением оригинальных имён с исправных разделов FAT, NTFS и EXT2;
  4. восстановление данных (документов, фотографий, архивов и т.д.) с любых файловых систем и носителей (жёсткие диски, флэшки, компакт-диски, дискеты и т. д.), даже при повреждении или форматировании в «быстром» режиме, но без сохранения оригинальных имён файлов и структуры папок, когда важно восстановить сам файл, а его первоначальное имя и местоположение не имеют значения.

ДЛЯ ЧЕГО НЕ ПОДХОДИТ ПРОГРАММА

  1. восстановление недавно удалённых файлов с сохранением оригинального имени и структуры папок с файловых систем, отличных от FAT, NTFS и EXT2;
  2. восстановление данных с повреждённых разделов, например, очищенных путём «быстрого» форматирования, если требуется сохранить оригинальные имена файлов и структуру папок (напри­мер, базы данных 1С 7.7).

ВЫВОД

  • Из бесплатных программ является одним из самых мощных инструментов для работы с жёстким диском и восстановления данных с любых носителей;
  • вероятность восстановления удалённых файлов с сохранением имён и структуры папок с разде­лов FAT, NTFS и EXT2 есть только в том случае, если разделы не были отформатированы, в про­тивном случае данные придётся восстанавливать в режиме RAW;
  • если бы полностью устранить проблемы с кириллицей и сохранением имён файлов и структуры папок, то программа стала бы лучшей среди всех.














К началу страницы