Ручное восстановление данных в дисковом редакторе
Чаще всего линуксоиды редактируют диски при помощи lde (расшифровывается как Linux Disk Editor), представляющий собой профессиональный редактор консольного типа, переваривающий ext2fs, minix, xiafs и отчасти FAT. Бесплатен, распространяется в исходных текстах (http://lde.sourceforge.net/) и работает практически под любой UNIX-совместимой операционной системой.
Рисунок 7 внешний вид редактора lde
Как с ним работать? Сначала открываем восстанавливаемый раздел или файл-дамп: "lde /dev/sdb1" или "lde dump" соответственно. lde самостоятельно определяет тип файловой системы и после нажатия клавиши (какой не критично), переходит в режим отображения супер-блока. Теперь клавиша <I> переводит нас в режим inode, а <B> в блочный режим (block-mode). Жмем <I> и редактор переходит к первой inod'e, принадлежащей корневому каталогу. Для перехода к следующей inod'е служит клавиша <Page Dowd>, а <Page Up>, соответственно, к предыдущей. Таким образом, можно пролистать все inod'ы. Как отличить какие из них принадлежат удаленным файлам? В этом нам поможет поле LINKS. Если файл удален оно равно нулю, и тогда "DELETION TIME" содержит время последнего удаления (мы же ведь помним когда удаляли файл?). Хорошая идея — проскандировать таблицу inod'е и отсортировать файлы по дате удаления. Файлы, удаленные последними, окажутся в конце списка. Как вариант, можно искать дату удаления контекстным поиском.
Рисунок 8 запуск редактора lde
Обнаружив подходящую inod'у, перемещаем курсор к первому блоку в списке DIRECT BLOCKS (где он и находится по умолчанию) и жмем <F2>. В появившемся меню выбираем пункт "Block mode, viewing block under cursor", (которому, кстати говоря, соответствует горячая клавиша <Shift-B>). Редактор перемещает нас на первый блок удаленного файла. Просматривая его содержимое в hex-режиме, пытаемся определить "на глаз", похож ли он на наш файл или нет? Для возврата к просмотру списка inod'ы, можно нажать <I>, а для восстановления файла: <Shift-R>, затем еще раз <R> и имя файла-приемника. Все! Файл восстановлен! На этом нашу миссию можно считать законченной и пить пиво, наслаждаясь проделанной работой.
Рисунок 9 просмотр содержимого inod'е
В некоторых случаях предпочтительнее восстанавливать файлы по их содержимому. Предположим, удаленный файл содержал строку "hello, world". Нажимаем <f> (search), а затем <A> (Search all block). Если забыть нажать <A>, то редактор будет пропускать блоки, принадлежащие удаленным файлам при поиске, что явно не входит в наши планы. Как вариант, можно запустить редактор с ключом "--all".
Рисунок 10 восстановление файла по содержимому
Теперь нажимаем <B> для перевода lde в block-mode, давим </> и вводим ASCII-строку для поиска. Редактор, пошуршав некоторое время жестким диском, находит нужный блок. Смотрим — действительно или это тот блок, который нам нужен или произошло недоразумение. Ложное срабатывание в смысле. Если блок действительно наш, ждем <Ctrl-R> и редактор сообщает номер inod'ы, которой этот блок принадлежит (он отображается внизу экрана, не спутайте его с номером последней просмотренной inod'у, отображаемой вверху). Клавиша <I> переводит нас в режим inode, после чего остается нажать <#> и ввести номер inod'ы, которую мы хотим просмотреть. Если дата удаления выгладит вполне правдоподобно, нажимаем <Shift-R>/<R> и сбрасываем файла на диск.
Все это работает только с ext2fs, и не пригодно для ext3fs, поскольку, как уже говорилась, она затирает схему размещения файлов на диске и данные приходится восстанавливать буквально по кусочкам. Это довольно сложная работа и лучше поручить ее профессионалам. Из личного опыта мог порекомендовать две фирмы: Ростовскую ACE-Labs (www.acelab.ru) и Киевский ЕПОС (http://www.epos.kiev.ua/). Впрочем, они наверняка потребуют денег…