База знаний

Восстановление удалённых данных в 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'

Надеемся, что данный обзор поможет Вам справиться с непредвиденной ситуацией!

Этот ответ был полезен?

 Распечатать статью

Также читают

Безопасность SSH

После установки сервера рекомендуем провести ряд мероприятий по обеспечению безопасности. 1....

Encrypt file with mcrypt or OpenSSL

mcrypt (http://mcrypt.sourceforge.net) Encrypt: mcrypt data.txt Enter passphrase:...

Доступ через SFTP для пользователей в пределах ChRoot

1. Создаем групп sftpusersaddgroup --system sftpusers2. Вносим изменения в...

Авторизация по ключам

В этой статье доступно и с примерами написано как сделать авторизацию ssh по ключам....