База знаний

Восстановление удалённых данных в 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 по ключам....

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

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

Encrypt file with mcrypt or OpenSSL

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

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

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