Мини-HOWTO: Восстановление структуры каталогов файловой системы Ext2fs |
---|
Пред. | | След. |
Анализируем содержимое каталога
Просмотрите выгруженное содержимое каталога в читаемом формате:
# xxd debugfs-dump | less |
Каждая запись состоит из пяти полей. Байты первых двух полей представлены в обратном
порядке. Это значит, что первый байт - самый младший.
Описание полей:
4 байта - номер inode.
2 байта - длина этой записи.
1 байт - длина имени файла (1-255).
1 байт - тип файла (0-7).
0 = Неизвестный
1 = Обычный файл
2 = Каталог
3 = Символьное устройство
4 = Блочное устройство
5 = Поток FIFO
6 = Поток SOCK
7 = Символьная ссылка
Имя файла (1-255 символов).
Если запись удаляется из каталога, то размер предыдущей записи
увеличивается на размер удаляемой записи (предыдущая запись как бы "съедает"
следующую).
Если файл переименовывается в более короткое имя, то уменьшается значение третьего поля.
Первая запись, которую вы увидите - это сам каталог, представляемый одной точкой.
Предположим, что у нас есть следующая запись в каталоге:
c1 02 0e 00 40 00 05 01 'u' 't' 'i' 'l' 's' |
В ней номер inode будет "e02c1" (в шестнадцатиричной форме) или 918209
(в десятичной). Следующая запись находится через 64 байте (шестнадцатиричное 40).
Мы также видим, что имя файла состоит из 5 байт ("utils") и что тип файла (01)
соответствует обычному файлу.
Теперь пересчитаем номера inode подкаталогов в десятичную форму.
Если вы не любите производить такие операции вручную, то я для вас
написал небольшую программу на C. Программа берет содержимое каталога
(созданное debugfs, как описано ранее в разделе
Разд. Находим номера inode удаленных каталогов). На стандартном выводе вы получаете список имен
файлов и номеров inode.
Перед запуском этой программы вам надо загрузить записанное содержимое
каталога в двоичный редактор и изменить поле "длина записи каталога"
в записи, предшествующей восстанавливаемой. Это просто: если мы обозначим длину
предшествующей записи как x, а длину записи, которую
вы хотите восстановить как y, то вам надо заменить поле,
содержащее x на x-y.
Программа называется e2dirana (ext2fs directory
analyse), и ее можно найти по адресу
http://www.matematik.su.se/~tomase/ext2fs-undeletion/
Пред. | Начало | След. |
Находим номера inode удаленных каталогов | | Находим удаленные inode |