База знаний
Восстановление удалённых данных в Linux
Непредвиденные ситуации встречаются в самый неподходящий момент. Одним случаем из этого правила было удаление папки со всеми базами данных MySQL.
Итак, главное - не паниковать и сохранять спокойствие!
Во-первых, не делайте "лишних движений" с файловой системой, не удаляйте, не записывайте.
Ваша задача сейчас - как можно меньше обращений к диску, чтобы не перезаписать секторы с удаленной информацией!
Реальный случай с базами данных произошел у одного из наших клиентов. Как выяснилось позже - файлы были удалены злонамеренно неизвестным лицом, воспользовавшимся брешью в скриптах.
Исходные данные:
Файловая система - Ext3
ОС = Ubuntu Server
Первым делом был сделан слепок жесткого диска с помощью утилиты dd на подмонтированный жесткий диск.
dd if=/dev/sda1 of=/mnt/somedisk/slepok.img
Если возможности сделать снимок нет, то лучше его не делать совсем, а работать напрямую с устройством.
Были удалены файлы данных СУБД MySQL, которые имеют такую структуру:
table.MYD
table.MYI
table.frm
Для восстановления достаточно достать файлы MYD и "подсунуть" в папку c данными: /var/lib/mysq/table/table.MYD.
Есть замечательная утилита Foremost, написанная агентами американских спецслужб, но она не способна восстановить MYD файлы, так как поиск идёт по сигнатурам файлов, но вполне справится с поиском и восстановлением большинства файлов (jpg, png, zip и тому подобных).
Пример использования:
Для начала сканирования и поиска удаленных файлов вводим в консоли с правами суперпользователя:
foremost -v -T -t jpg -i /dev/sda1 -o output
где
-v – выводить информацию о прогрессе во время сканирования
-Т – проставить время в названии директории для восстановленных файлов
-t jpg,xls – искать и восстанавливать только файлы типа *jpg (можно перечислять несколько типов файлов через запятую)
-i /dev/sda1/ - раздел винчестера, с которого нужно провести восстановление данных
-o output – папка для записи восстановленных данных
Примечание: если хотите восстановить файлы Office необходимо указывать "ole" как значение типа файла(-t ole)
Воспользуйтесь ссылками для получения более подробной информации о Foremost:
Про Foremost
Официальный сайт Foremost (скачать Foremost)
Нам же на помощь пришел целый набор утилит, под названием The Sleuth Kit!
Этот набор утилит уже есть в пакетах Ubuntu.
Установим его: apt-get install sleuthkit
Запускаем поиск:
# fls -rd /dev/sda1>list.txt
Ключ -r нужен для рекурсивного поиска по директориям (без ключа появится только список файлов и директорий в корне), -d покажет только удаленные файлы (Если запустить без этого ключа, то покажет еще и те файлы которые не были удалены, удаленные отмечены звездочкой). Выведет следующий список:
В файлике list.txt теперь ищем удаленные данные.
-/r * 4534533: путь/table/тут-может-быть-что-угодно.MYD
Чтобы восстановить файл есть утилита icat(man icat):
# icat -r /dev/sda1 4534533> table.MYD
И так по крупицам и последующим просмотром файлов восстанавливаем нашу злосчастную базу данных (в файлах довольно легко заметить названия полей табличек и догадаться о навзании таблицы).
Обязательно просмотрите следующие статьи:
Обзор программ восстановления под Linux
Ubuntu - работа с Foremost
Ubuntu - работа с The Sleuth Kit
P.S.:
Возможно вы просто переместили файлы? Попробуйте поиском "в лоб"!
find / -name '*.MYD'
Надеемся, что данный обзор поможет Вам справиться с непредвиденной ситуацией!