восстановление файл
Возвращение из небытия: восстановление файлов в Linux
Неприятности случаются чаще, чем хотелось бы. Одной
из них является удаление файла с важными данными. Причем
в Unix, считается, что он отправляется в небытие. К
сожалению, действительно, восстановление удаленных
файлов в Unix не столь простая задача, как в Windows с
ее привычной корзиной для удаленных файлов восстановление файл
многочисленными утилитами от сторонних поставщиков (к
примеру, Norton Utilities). Это связано с особенностями
архитектуры файловых систем Unix. ОС Linux более широко
трактует понятие файла. Под файлом понимается любой
объект, имеющий имя в файловой системе. Одним из таких
объектов является каталог. В каталоге хранится как имя
файла, так восстановление файл дополнительная информация о файле - его
размер, информация о владельце файла, местоположение на
диске, дата создания, дата последней модификации, права
доступа восстановление файл много другое. Причем для эффективности,
дополнительную информацию выносят в специальную
структуру, восстановление файл в каталоге оставляют только ссылку на эту
структуру. При удалении файла эта дополнительная
информация физически не удаляется с диска, восстановление файл лишь
отмечаются как свободные соответствующие блоки. Поэтому
существует потенциальная возможность восстановления,
удаленного файла, пока на место его расположения ничего
не записывалось. Я попытаюсь предложить алгоритм
действий при возникновении такой неприятности.
Прекращение дальнейшей работы.
Сразу после того, как вы осознали, что произошло
нечто ужасное, прекратите дальнейшую работу на разделе
диска с удаленным файлом. Естественно прекратить работу
должны не только вы, но восстановление файл все остальные пользователи,
вошедшие в систему. Предпримите меры, чтоб больше никто
не мог зайти в систему, пока вы будете заниматься
восстановлением файла (например, с помощью
/etc/nologin). Главное - не допустить перезапись ранее
используемых удаленным файлом дисковых блоков другими
процессами. Вероятность этого существенно возрастает,
если раздел почти заполнен.
Сам себе некрофил.
Рассмотрим два варианта восстановления. Один
достаточно универсальный, применим, скорее всего, в
любой системе Unix. Второй - заточен под работу с
файловой системой Ext2 Linux.Восстановление
файлов с известным содержимым
Будем считать, что удален файл из корневого раздела
/etc/passwd восстановление файл у вас нет проблем со свободным
пространством на жестком диске.
* создаем копию корневого раздела восстановление файл помещаем ее в
файл из раздела /export. Этот раздел должен иметь
достаточно свободного места, чтобы вместить в себя
целиком раздел, на котором был удален файл
# df -k//exportFile system Kbytes used avail
capacity Mounted on/dev/dsk/c0t3d0s0 122070 19512
102558 16% //dev/dsk/c1t0d0s0 17592638 14425963
3166675 82% /export# dd if=/dev/dsk/c0t3d0s0
of=/export/recover.dsk263077+0 records
in263077+0 records out# ls -l-rw-r-r-- 1
root other 134701056 Jul 1 16:54 recover.dsk
* запускаем команду cat с ключом -n (вывод номеров
строк), вывод которой перенаправляем утилите fgrep,
которая, осуществив поиск по заданному шаблону, отсечет
все лишнее
# cat -n recover.dsk | fgrep "root:x:0:1"200601
root:x:0:1:Super-User:/:/sbin/sh202108
root:x:0:1:Super-User:/:/sbin/sh
строки могут быть восстановление файл не найдены как в случае ошибки
при задании шаблона, так восстановление файл при потери содержимого
удаленного файла, который мог быть переписан. В нашем
случае, как видим, сохранилось две версии файла.
* выведем некоторое количество строк после
найденной# fgrep -A10 "root:x:0:1" recover.dsk >
passwd# cat
passwdroot:x:0:1:Super-User:/:/sbin/shdaemon:x:1:1::/:bin:x:2:2::/usr/bin:...
ключи -A<число строк> восстановление файл -B<число строк>
утилиты fgrep позволяют выводить несколько строк,
расположенных после (after) восстановление файл до (before) найденной по
шаблону строки. Если вы сможете получить весь свой файл
за один шаг - то вам крупно повезло. Но, к сожалению,
файлы обычно фрагментированы, восстановление файл чем больше размер файла,
тем выше вероятность фрагментации восстановление файл больше самих
фрагментов. Поэтому, скорее всего, придется повторять
описанную процедуру, используя различные шаблоны восстановление файл
объединяя полученные части. Сложно бывает понять, какая
из версий файла, сохранившихся на диске, последняя. Это
определяется, только просмотром содержимого
восстановленного файла. А значит, вам придется
восстанавливать все версии файла. Довольно нудно, но
эффективно.
Восстановление файлов в Linux Ext2
Этот метод применяется в случае удаления командой rm
или функцией unlink восстановление файл не требует при восстановлении
знания содержимого удаленного файла. Для работы нам
потребуется отладчик файловой системы debugfs довольно
мощная утилита, применяемая обычно для проверки восстановление файл
изменения файловой системы восстановление файл предоставляющая
непосредственный доступ к файловой системе. Нам
потребуются три ее команды:
lsdel - вывод всех удаленных индексных
дескрипторов в данной файловой системе
cat - просмотр содержимого, соответствующего
дескриптору
dump - восстановление файла
Запускаем debugfs в требуемом разделе:
# debugfs /dev/hda8debugfs 1.19,13-Jul-2000 for
EXT2FS 0.5b, 95/08/09debugfs:На приглашение
вводим команду lsdel(чашка кофе не помешает, поскольку
системе потребуется время на просмотр всего
раздела):
debugfs: lsdelInode Owner Mode Size Blocks Time
deleted723300 1000 100664 27018 2/ 7 Mon May 20
19:08:17 2002723301 1000 100444 1671 1/ 7 Tue May 20
19:08:17 2002. . . . . . . . . . . . . . . . . . . .
. . . . . . . . 944887 1037 100600 597 1/ 1 Sun
Jan 26 20:05:00 2003717281 1000 100400 1 1/ 1 Sun
Jan 26 20:05:13 2003327101 1000 100644 15 1/ 1 Sun
Jan 26 20:07:06 2003Лучше сразу перенаправить
вывод в файл, введя команду:#echo lsdel |
debugfs /dev/hda6 > /tmp/lsdel-outputЕсли с
момента удаления не было операций с разделом, то
интересующие нас данные будут в конце списка. Посмотрим
содержимое, соответствующее последнему дескриптору,
набрав команду:debugfs: cat
<327101>my_very_important_dataУдаленный
файл найден, он содержал единственную строку. Команда
dump восстанавливает файл, записывая его на диск под
именем my_recovered_file:debugfs: dump -p
<327101> /tmp/my_recovered_fileключ -p
указывает на то, что у файла должны остаться прежними
владелец, группа восстановление файл права доступа.
Восстановление группы файлов в Linux Ext2
Для восстановления группы файлов, целесообразно
воспользоваться утилитой Тома Пайка recover. Установка
стандартна:# tar zxf recover-1.3.tar.gz# cd
recover-1.3# make# make installПо
умолчанию утилита устанавливается в систему каталогов с
корнем /usr. Если надо установить в другое место -
читайте ReadMe. Во время работы recover задав несколько
простых вопросов, типа: кто является владельцем файлов,
когда эти файлы были удалены, каков приблизительный
размер этих файлов, запускает debugfs, восстановление файл восстанавливает
соответствующие заданному критерию индексные
дескрипторы, помещая их в каталог, указанный
пользователем. К сожалению, имена файлов не подлежат
восстановлению. Восстановленные файлы получают имена,
состоящие из префикса dump восстановление файл последующего номера
индексного дескриптора.
А что же мы восстановили?
Для идентификации восстановленных файлов используем
две утилиты strings восстановление файл file. Первая отображает
последовательность символов ASCII, извлекая ее из
указанного файла, вторая - выясняет тип файла (например,
является ли он архивом или, скажем, файлом
PostScript).
Запускаем утилиту file:
# file *dump39788: directorydump98008: PGP
armored text signed messagedump80154: gzip
compressed data, deflated, last modified: Sun Jan 28
03:31:21 2001, os: Unixdump73290: ASCII
text dump67095: ?diff? output
textdump72945: JPEG file dump9773: MPEG 1.0
layer 3 audio stream data, 128 kBit/sdump8176: ASCII
C program text dump58764: Bourne shell script
text executabledump3223: troff or preprocessor input
text Можно несколько автоматизировать
процесс, используя простейшие сценарии наподобие
следующего, добавляющего расширение к текстовым файлам
программ на языке С: # for i in ?file * |
grep ? ASCII C program text? | \awk -F: ?{print
$1}??;do mv $i $i.c; doneПосле определения
типа файлов попытаемся идентифицировать каждый файл. Для
тех, что содержат текст, код на С, звук или изображение
можно открыть соответствующими программами восстановление файл попытаться
угадать первоначальное имя. Двоичные файлы, например
исполняемые файлы, библиотеки или файлы баз данных,
идентифицировать гораздо труднее. И если исполняемые
файлы или библиотеки проще не идентифицировать, восстановление файл просто
переустановить недостающие, то с базами данных придется
повозиться. В этом случае придется применить утилиту
strings, выведя на экран все текстовые строки ASCII,
содержащиеся в файле.# strings dump44768
По выводу можно догадаться, что данный файл является
базой данных восстановление файл открыть его соответствующей
программой.
Заключение
Помните, ничто не заменяет регулярного
резервирования. А применение методов, рассмотренных в
статье, должно быть скорее исключением, чем правилом.
Поверьте, ведь немного удовольствия от спуска в бездну
небытия.
#bn {display:block;}
#bt {display:block;}
разделы
лотерея
сушильный машина frigidaire
restart плита
набор гинекологический
против рак
телематические служба
центральный детский мир
архитектурный визуализация
iridium motorola
кулер тихий
корпоративный хранилище данный спирли
портативный радиостанция
арманьяк доставка
флеш презентация
кислород
дезинфекция белье
вкус цвет
сушильный машина ardo
отбеливание
li-da
трехфазный электросчетчик
пакет гриппер
спецобувь заказ
электрокамин dimplex model plasma (sp9)
магнитный доска
asus p505
конвейер
телефонный анкетирование
стелажи
кулер процессорный
обогащение кислородом
zip lock
i`m o.k./герои гроб
барбекю
барбекю
барбекю
барбекю
барбекю
барбекю
барбекю
барбекю
витрина подогреваемый
перевод испанский
операторский центр
резка
проходить осмотр гинеколог
краска ржавчина
лак orly
кулер 939
бахила
газовый заправка
купить блинницу
зиплок
крот-95
зубной боль
французский вина
восстановление файл