Восстановление данных под Linux

Бытует мнение, что восстановление данных под Линукс требует от пользователя лишь знания того как работать со специальной программой восстановления. Однако, в случае если необходимо восстановление файлов после форматирования, придется воспользоваться ручным редактированием структур осуществляющих управление системой Linux.

Если возникнет нештатная ситуация в работе данной файловой системы, то нужный софт может и не найтись вовремя. Значит придется восстанавливать нужные данные вручную. Это можно сделать следуя определенному алгоритму восстановления файлов системы ext2, а так же ext3.

Необходимо учитывать, что раздел системы ext2 начинается с boot-сектора, длина которого 1 кб. Его используют загрузчики для того, чтобы хранить на нем свою вторую часть. К примеру, Grub хранит там код Stage 1.5. В супер-блоке размещается для хранения ключевая информация, которая раскрывает структуру файловой системы. Для чтения информации размещенной в супер-блоке необходимо запустить, решетка tune2fs -l /dev/hda1. Эта команда позволит оценить состояние в котором находится файловая система на данный момент.

Для того, чтобы узнать из скольких блоков состоит файловая система необходимо заглянуть в «Block count». Свободные блоки будут отражены в «Free blocks».

Вся важная информация файловой системы размещена в inode-таблице. Это своеобразное хранилище данных о каждом из файлов. Так, ext2_inode имеет неизменный размер, который ему был задан в момент создания всей системы.

Восстановить данные после удаления файла или форматирования всех данных в inode достаточно легко, так как по факту физически информация не удаляется, а inode файла и вовсе не меняет свое место. Значит он хранит все данные о файле, который был удален.

Восстановить удаленный или отформатированный файл в системе ext2 можно зная его inode номер. По сути, пользователь должен собрать воедино все массивы ссылок в блоки данных, которые затем превратятся в файл.

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

Восстановление будет более успешным если в первую очередь размонтировать нужный раздел. Файлы из корневого раздела восстанавливаются лишь с нажатием кнопки RESET. После этого придется произвести загрузку при помощи LiveCD.

Воспользовавшись командой debugfs, которая содержится в пакете e2fsprogs можно напрямую указать раздел, который содержит нужную файловую систему. В этом случае пользователь сможет открыть командную строку способную принимать большое количество команд. Набрав help можно со всеми из них ознакомиться. Интерес вызывают lsdel, а так же stat, стоит обратить внимание и на cat с dump. Запустив lsdel можно увидеть все inode, которые были удалены.

Открыв inode можно попытаться найти удаленный файл по определенным параметрам. Запомнив номер inode нужно нажать stat в debugfs. Это позволит узнать все параметры inode. Эти данные позволят восстановить нужный файл при помощи команды dd, а команда dump сохраняет все блоки inode в определенный файл, путь к которому указан.

Воспользовавшись ключом ‘-p’ можно сохранить файлу предыдущие параметры.

Идентификация файла после восстановления производится с помощью утилит file и strings, которые раскрывают «начинку» файла.

При восстановлении файла необходимо времени удаления или Deletion time присвоить индекс «0″, а количеству ссылок или Link count индекс «1″. Файл будет снова активен, но файловая система при этом будет находиться в несколько измененном состоянии.

Запустив fsck можно будет исправить несоответствия системы, а затем файлы смело можно отправлять в каталог, содержащий потерянные и возвращенные файлы или lost+found.

Создание жесткой ссылки на файл производится командой link в debugfs. После этого файл вернется в каталог.