Рассылка закрыта
При закрытии подписчики были переданы в рассылку "LinuxCenter News Channel: новости Linux" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Linux Gazette на русском
Информационный Канал Subscribe.Ru |
Linux Gazette на русском | Выпуск #97 | Тираж 7693 экз.
"Куда, куда вы удалились?"
...предположительно ария Ленского в опере "Е.Онегин"...
Всем привет! (Поглядывая в сторону информации о рассылке
на SubscribeRU) Мда... Хотя рассылка и была заявлена как
выходящая один раз в неделю, но мы (RLG Team) вроде как
Вам должны и не только Вам, но и себе тоже. Поэтому потерпите
нас немного -- мы будем Вас "пичкать" новыми переводами немного
чаще, чем один раз в неделю. Потом этот процесс стабилизируется
и в рассылке не будет наблюдаться передозировки. :) Это была
преамбула, а теперь, как говорил один из героев братьев
Стругацких, будет амбула. :) Присылайте свои вопросы и замечания по адресу lgrus@lrn.ru и, если не трудно,
сразу указывайте, можно ли использовать Ваши письма в
рассылке. Александр Куприн Опыт по
восстановлению файлов Мы опишем попытку восстановления данных, удаленных по
невнимательности с файловой системы ext2. Помните, что ход событий
был далек от желаемого и мы искренне надеемся, что наши читатели не
повторят наших ошибок. А чтобы показать, сколько полезного можно
узнать во время кризиса мы детально опишем всю историю. Две машины -- Fish и Bell. Fish -- это Sun E250, а Bell --
Pentium 3 (450 MHz). Они находятся в одной и той же подсети
Ethernet. Bell работает под управлением Debian GNU/Linux 3.0r0 после
беспроблемного обновления с версии 2.2r7. Версия ядра Linux --
2.4.18. Fish так же работает под Debian 3.0r0, портированным на Sparc64.
Недавнее обновление с 2.2r7 повлекло за собой единственную
проблему: XFree перестал запускаться из-под обычных пользователей
(из-под Тип файловых систем -- На Fish XFree работает от [Вы заметили разницу в регулярном выражении команд
После длительной охоты на ошибки, проблема с иксами, наконец,
решена; подошло время удалять пользователя. Что бы как-то ускорить
процедуру, изучаем страницу руководства. Это приводит к обнаружению
привлекательного ключа: Ба-бах! Приехали! Данный ключ указывает команде
Содержимое каталога В первую очередь необходимо создать образ разрушенного
устройства. Но все оказалось не так просто из-за проблемы с сетью: передача
большого файла обрывалась через некоторое время. Файл нужно было
разбить на части. Размер раздела мы получаем размеры и количество неделимых "долек"
раздела Для следующего шага мы использовали пакет OpenSSL, вместо
FTP. На машине Fish выполняем скрипт: Объединяем куски на машине Bell: То же самое можно было сделать проще, с машины Fish: Мы прибегли к Linux
Ext2fs undeletion mini-HOWTO, Аарона Крэна (Aaron Crane); Ext2fs
undeletion of directory structures mini-HOWTO, Томаса Эриксона
(Tomas Ericsson); программе recover
Тома Пыке (Tom Pycke); патчу от Торстена Вернера (Torsten Werner) для программы
debugfs на платформе i386. Утилита Файлов нет! Похоже, что мы размонтировали Этот документ, найденный в Проекте документации по Linux,
научил нас, как найти i-ноды (иными словами блоки) удаленных
файлов и как их можно восстановить командой Из него мы научились находить удаленные файлы в каталогах. Мы
следовали инструкциям. Скрипт из седьмого раздела потребовал
доработки для нашей версии И все равно, у нас не получилось найти имена каталогов и перейти
к восьмому разделу. Нужно было искать еще что-то. Последним шансом был (если честно, то это нужно было делать в
первую очередь - Прим.пер.) и там мы нашли упоминание о команде и большинство каталогов восстанавливается в директории
Хотелось бы подчеркнуть следующее. И никогда не используйте новые ключи в первый раз с правами
пользователя На компьютере Fish есть устройство записи на магнитную ленту.
Утилиты GNU Использование регулярных выражений в командах интерпретатора
очень опасно (но, в тоже время, это очень мощный инструмент -
Прим.пер), особенно в работе с файлами, названия которых начинаются
с точки. Возможно суперпользователь Эта статья в основном была написана при помощи Agenda VR3. Возможно единственным PDA
со свободным ПО на пляже Gran Canaria. [*1] Мда... Этот безымянный пользователь
им очень насолил, если они решили дать ему в статье библейское
имя. Команда переводчиков: Со всеми предложениями, идеями и комментариями обращайтесь к
Александру Куприну (lgrus@lrn.ru). Убедительная
просьба: указывайте сразу, не возражаете ли Вы против публикации
Ваших отзывов в рассылке. Сайт рассылки: http://gazette.linux.ru.net
(Глядя на авторов статьи и ухмыляясь) Так и тянет сказать -- встречайте!
C.E.C. Artime и J.A. Baro "спешат на помощь". ;) В первую очередь
самим себе и, возможно, кому-то из Вас. Хотя, если честно, пусть эта
возможность будет где-то между невозможным и маловероятным. :)
Обращаю Ваше внимание на то с какой элегантностью авторам удалось,
даже и не подозревая об этом, поставить на колени раздел в 10Гб.
Итак, читайте историю о похождениях C.E.C. Artime и J.A. Baro
в Стране Потерянных Файлов. :)
Спасибо за перевод Ивану Песину!
Отдельное спасибо Анатолию Широкову за удачно подсказанный
эпиграф к статье, а также за комментарии к другим выпускам
(прошедшим и будущим). :)
Да! Раз уж пошла такая пьянка (да простят меня апологеты трезвого образа
жизни за такое вульгарное сравнение) я хотел бы поблагодарить предыдущего
координатора проекта, Сергея Скороходова, за моральную поддержку.
Сергей, спасибо! :)
Автор: (C) C.E.C. Artime и J.A. Baro
Перевод: (C) Иван Песин
Прелюдия: пришла беда.
Место действия (наше время -- прим.ред.).
Аппаратное обеспечение.
Программное обеспечение
root'а
работает). Ядро Linux версии
2.4.18-SMP.ext2
.Как мы боролись (скорее "как мы напоролись" -- прим.ред.)
root'а
, но не
работает под правами обычных пользователей.
Причины: проблема либо с привилегиями, либо с пользовательскими
конфигурационными файлами.
Решение: добавим нового пользователя[*1] и скопируем файлы настроек
root
'а в его домашний каталог:
root@fish# adduser judas
Enter new UNIX password:
Retype new UNIX password:
root@fish# cp --recursive /root/.[a-zA-Z]* /home/judas
root@fish# chown --recursive judas:judas /home/judas/.*
cp
и chown
?]
(Классическая ошибка использования регулярных
выражений: следует помнить, что под шаблон .* подходит выражение
"..", т.е. родительский каталог. Потому будьте осторожны
с командой rm -rf /bla-bla/.* - можете остаться без корневого
каталога - Прим.пер.) (И с дикой головной болью -- прим.ред.)
root@fish# deluser --remove-all-files judas
deluser
провести поиск по диску файлов, владельцем
которых является judas
и удалить их!/home
исчезло.
Две минуты спустя мы размонтировали соответствующее устройство
(/dev/sda8
).Восстановление
Первая попытка
Поскольку на Fish нет достаточного количества свободного места, то
будем копировать данные на жесткий диск компьютера Bell:
root@fish# ftp bell
ftp> put '|dd if=/dev/sda8' fishbackup
/dev/sda8
-- 10
ГБайт.
Прибегнув к утилите factor
из пакета GNU
shellutils
:
root@fish# factor 10142
10142: 2 11 461
/dev/sda8
[*2].Безопасное туннелирование
Сперва мы обменялись паролями для возможности работать в пакетном
режиме:
root@fish# ssh-keygen
artime@bell$ ssh-keygen
root@fish# scp /root/.ssh/identity.pub artime@bell:/home/artime/.ssh/authorized.keys
root@fish# scp artime@bell:~/.ssh/identity.pub ~/.ssh/authorized.keys
#!/bin/sh
for i in $(seq 0 460)
do
dd if=/dev/sda8 bs=$((2*11*1024)) skip=$i of=fula
scp --batch fula artime@bell:~/fiback.$i
done
for i in $(seq 0 460)
do cat fiback.$i >> fiback.raw
done
#!/bin/sh
for i in $(seq 0 460)
do
dd if=/dev/sda8 bs=$((2*11*1024)) skip=$i | ssh artime@bell "cat >> fiback.raw"
done
Поиск утерянных данных
Неудачная попытка
Recover
предназначена для восстановления
единичных файлов. Поскольку мы внезапно потеряли сотни файлов, мы
думаем, что эта не та утилита, с которой стоит начинать попытки
восстановления. Наиболее подходящее решение -- это использование
патча Вернера для debugfs
; у нас уже есть копия
поврежденной файловой системы на машине с архитектурой i386, а
программу можно загрузить с twerner.debian.org
:
artime@bell$ ./debugfs fishback.raw
debugfs> restore
debugfs> quit
artime@bell$ mkdir mnt
artime@bell$ mount -t ext2 -o loop fishback.raw mnt
artime@bell$ ls -l mnt
/dev/sda8
слишком поздно. А как указано на странице Вернера, его утилита
позволяет восстанавливать файлы, которые все еще имеют
имя.Стоит почитать
Документ Крэна по восстановлению удаленных файлов
dump
утилиты debugfs
. Изучение закончилось массой файлов в
одном каталоге. Но все равно, это была лишь малая часть из них. Как
уже указывалось ранее, полное по-файловое восстановление по схеме
приведенной в HOWTO Крэна невозможно в нашем случае.Документ Эриксона по восстановлению каталога
debugfs
#!/bin/sh
awk '{ print "mi <" $1 ">\n"\
"\n\n\n\n\n\n\n"\
"0\n"\
"1\n"\
"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" }'
Страницы руководства
$ man debugfs
rdump
,
неуказанной ни в одном другом документе. Выполняем следующий скрипт
над i-нодами каталогов, находящихся в файле lsdel.out
,
после выполнения инструкций из раздела 6 документа Ext2fs
Undeletion of Directory Structures mini-HOWTO:
#!/bin/sh
awk '{ print "rdump <" $1 "> folders\n" }'
folders
. Но без имен! В конце концов, нам пришлось
вручную переименовывать двести каталогов, основываясь на их
содержимом. И даже после этого мы не досчитались некоторых файлов,
особенно почтовых ящиков. Попробуем поискать вручную:
$ strings fishback.raw | grep -B1 -A99 "To: lisistrata" > lisistrata.mbox
Эпилог
RTFM -- Читайте руководство[*3]
root
.Магнитные ленты
mt
и tar
очень полезны при
выполнении планового архивирования данных. Документ Аарона Крэна
содержит интересные ссылки по этому поводу.Регулярные выражения
root
должен
использовать командный интерпретатор с ограниченной (а не
расширенной) поддержкой регулярных выражений (для офисных
дистрибутивов, или инсталляций "из коробки" -- да, но
только не для опытных администраторов, для которых регулярные
выражения -- важнейший инструмент! - Прим. пер.). Мы рекомендуем esh.PDA
Авторы
С.Е.С Эртайм -- фан GNU и адвокат свободного ПО с 2000.
Дж. А. Баро -- пользователь Linux и Perl-хакер с 1996.
Примечания редактора
[*2] Утилита factor раскладывает
указанное число на ряд множителей, являющихся простыми числами:
10142 = 2 * 11 * 461
[*3] Угу. Читайте и "...будет вам
благодать..." :)
Copyright ї 2003, C.E.C. Artime and J.A. Baro.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 86 of Linux Gazette, January 2003
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей
Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн,
Андрей Киселев
Эту статью можно взять здесь: http://gazette.linux.ru.net/lg86/baro.html
http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
В избранное | ||