Мини-HOWTO: Восстановление удаленных файлов с файловой системы Ext2fs в Linux

Abstract

Представьте себе следующую картину. Последние три дня вы не ели, не спали, даже не принимали душ. И, наконец, ваши усилия вознаграждены: вы закончили программу, которая принесет вам всемирную известность и славу. Все, что вам осталось сделать - это запаковать ее архиватором tar и поместить на Metalab. Да... и удалить все копии старых файлов, созданные Emacs. Итак, вы набиваете на клавиатуре rm * ~. Лишний пробел в вашей команде вы замечаете слишком поздно. Вы только что удалили вашу супер программу! Но помощь у вас под рукой. Этот документ рассказывает, как можно восстановить удаленные файлы с файловой системы ext2 (Second Extended File System). Может быть, несмотря ни на что, вам удастся выпустить вашу программу...


Содержание
Введение
Несколько советов
Сколько процентов данных я смогу восстановить?
Итак, как мне восстановить файл?
Отключение файловой системы
Подготовка к непосредственному изменению inode
Подготовка к записи данных в другое место
Поиск удаленных inodes
Получение подробной информации об удаленных inode
Восстановление блоков данных
Прямое редактирование inodes
Станет ли легче в будущем?
Есть ли какие-нибудь утилиты для автоматизации процесса?
Отзывы и предложения
Ссылки и благодарности
Права
Авторские права

Введение

Этот мини-Howto предоставляет вам возможность восстановить удаленные с файловой системы ext2 файлы. В нем также содержатся некоторые советы о том, как можно избежать удаления файлов.

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

Мы предполагаем, что вы знакомы с файловыми системами UNIX. Впрочем, мы надеемся, что он вполне доступен большинству пользователей Linux. Если вы начинающий пользователь, учтите, что восстановление удаленных файлов под Linux все же требует некоторых технических знаний и упорства.

Вы не сможете восстановить удаленные файлы с файловой системы ext2, как минимум, без прав доступа для чтения к непосредственно к устройству (device), на котором хранился файл. Подразумевается, что вы должны иметь права root, хотя некоторые дистрибутивы (например Debian GNU/Linux) имеют группу disk, члены которой имеют доступ к этим устройствам. Также вам потребуется утилита debugfs из пакета e2fsprogs, который должен быть установлен.

Почему мы написали этот документ? Потому, что имеем большой опыт случайного и непоправимого использования команды rm -r с правами root. Ваш покорный слуга однажды удалил около 97 необходимых JPEG файлов, которые невозможно было найти в других источников. Но, при помощи некоторых полезных подсказок (см. раздел Разд. Ссылки и благодарности) и большого терпения, я восстановил 91 файл в первозданном виде. Пять из оставшихся мне удалось восстановить частично (по крайней мере было понятно, что это за картинки). Лишь один файл невозможно было просмотреть, но, я уверен, что потерял не более 1024 байт информации (это очевидно из заголовка файла).

Ниже будет объяснено, какой процент восстановления удаленных файлов, вы можете ожидать, в зависимости от обстоятельств.

Версии документа

Предыдущие опубликованные версии документа:

Изменения в версии 1.1

Какие изменения были внесены в эту версию? Во-первых, кое-что было изменено в самом примере, на котором показано восстановление файла. Спасибо всем, кто указал на ошибку. Надеюсь, я стал внимательнее при создании интерактивных программ.

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

В-третьих, в середине документа был убран огромный кусок закодированной uuencode программы fsgrab. Программу теперь можно найти на моем сайте и на сайте Metalab(и зеркалах).

В-четвертых, документ был переведен в LDP SGML. Этот язык (SGML) может быть легко преобразован в другие языки (включая HTML и LaTeX) для просмотра и печати. Одно из преимуществ - красивый вид в печатных изданиях, другое - наличие перекрестных ссылок при просмотре через WWW.

Изменения в версии 1.2

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

Первое изменение было предложено Egil Kvaleberg egil@kvaleberg.no, и оно касалось команды dump в debugfs. Спасибо еще раз Egil.

Второе касается использования chattr, чтобы избежать удаления важных файлов. Спасибо Herman Suijs H.P.M.Suijs@kub.nl за упоминание об этом.

Абстрактная часть была пересмотрена. Были добавлены URL для организаций и программного обеспечения. Также были внесены некоторые другие незначительные изменения (исправлен typos и т.п.).

Изменения в версии 1.3

Хотя это первое обновление за 17 месяцев, мало что нового появилось в документе. В этой версии исправлены незначительные ошибки (typos, неправильные URL) и изменены некоторые части текста, к сожалению, устаревшие, например, данные о версиях ядра и lde. И еще, 'Sunsite' везде заменен на 'Metalab'.

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

Где можно найти этот документ

Последнюю версию этого документа всегда можно найти на сайте Linux Documentation Project (и зеркалах).

Последняя версия также лежит на моем сайте в нескольких форматах:

  • SGML. Это исходный текст SGML, написанный с использованием пакета SGML Tools.

  • HTML. Это HTML, автоматически созданный из SGML.

  • Текст. Это простой текст, созданный из SGML.