Библиотека сайта rus-linux.net
Если вы сказали "О-о-о-й!": ext3undel
Оригинал: For those "oops" moments: ext3undel
Автор: Kurt Edelbrock
Дата: 10 июля 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 16 августа 2008
Команда rm - мощное средство удаления данных, до тех пор, пока вы не удалите по ошибке не те файлы или каталоги. К счастью, есть утилита ext3undel, способная восстановить ошибочно удаленные данные на файловой системе ext3. Можно восстанавливать файлы по имени, либо можно восстановить все файлы, отмеченные как удаленные (хотя имена файлов не восстанавливаются, однако можно понять что это за файл по его содержимому).
Файлы, хранящиеся в файловой системе ext3, состоят из двух частей. Во-первых, это метаданные файла - а именно имя файла, его размер, время создания и доступа. Они хранятся в структуре данных Unix, имеющей название inode. Собственно данные хранятся в блоках жесткого диска. Удаление файла приводит к тому, что теряется связь между метаданными и блоками файловой системы (его содержимым). При удалении как inode, так и блоки данных помечаются как свободные, и операционная система может при необходимости записывать в них новые данные. Однако до тех пор, пока inode и блоки отмечены свободными и не перезаписаны, пользователь может восстановить соответствующий файл. Очень важно сохранять восстанавливаемые файлы на другой раздел: ведь любые изменения на оперируемой файловой системе приведут к перезаписи данных, и могут перезаписаться сами восстанавливаемые данные. Восстановление данных происходит по обратному алгоритму: удаленные структуры помечаются как занятые, и происходит установление связи между inode и блоками данных.
На самом деле это сложный процесс, и программа ext3undel сама по себе не реализует эту фунцию, она является лишь оберткой для других программ, на которые ложится основной груз. Программе ext3undel можно отдать одну из двух команд: gabi (get all back immediately - восстановить всё немедленно) и ralf (recover a lost file - восстановить удаленный файл).
Gabi основана на двух программах для восстановления данных, носящих имена Photorec и Foremost. Преимущество использования ext3undel перед этими программами проявляется во времени: автоматизация процесса и отсутствие конфигурации приводят к увеличению шансов того, что восстанавливаемый файл не будет перезаписан новыми данными. Команда gabi запрашивает у пользователя, файлы с какого раздела нужно восстановить и какой раздел будет использоваться для сохранения восстановленных данных, и какие именно типы файлов (или все файлы) Photorec должен восстанавливать. После этого Photorec просканирует свободные блоки диска на наличие "сигнатур" - следов того, что когда-либо здесь в этих блоках был файл. Для больших дисков этот процесс может занять долгое время. Данные inode не могут быть восстановлены, поэтому придется вручную отсортировать восстановленные файлы и искать среди них тот файл, который нужен.
Команда ralf основана на программе SleuthKit, призванной восстанавливать конкретный файл. Другими словами, SleuthKit отыскивает нужный inode. Затем обращается к файловой системе, ищет в ней блоки, которые когда либо были ассоциированы с этим inode. Наконец, SleuthKit сохраняет данные в образ, который затем обрабатывается Photorec (в отличие от всего жесткого диска как в gabi). Кстати, будет восстановлен не только тот файл, что вы указали. Как и в gabi, придется отыскивать нужный файл среди общей кучи восстановленных файлов.
Для пробы я установил обертку ext3undel на обновленную версию Ubuntu 8.04 Server Edition в VMware. Создал три разных текстовых файла и JPEG-картинку, после чего удалил их командой rm. Все прошло успешно, мне удалось восстановить все файлы с помощью как gabi, так и ralf. Это была свежая установка, поэтому мне не пришлось продираться через кучу файлов (хотя было интересно посмотреть, что именно удалял производитель виртуальной машины перед ее релизом).
Последнюю версию ext3undel можно скачать с веб-сайта разработчика. Программа распространяется в виде tar-архива, а также в прекомпилированных пакетах deb и rpm. Естественно, придется установить зависимости - Photorec, Sleuthkit и Foremost. Эти программы есть в репозиториях большинства дистрибутивов.
ext3undel - замечательное средство для эффективного восстановления данных. Однако не следует слишком на нее рассчитывать; все равно следует проводить резервное копирование, ведь бывают случаи, когда невозможно восстановить данные, даже если запускать ext3undel сразу после удаления. Если удаленный файл фрагментирован, программа сможет найти лишь первый фрагмент. Также ext3undel не может восстанавливать данные с испорченных жестких дисков. Однако это средство наверняка поможет вам в критических ситуациях, и уменьшит потери от случайных ошибок.