Недавно мой HDD сломался, и мне пришлось запустить fsck
команду. Многие файлы были перемещены в lost+found
папку, и я извлек важные из них с помощью find
и grep
, но я не могу найти свои базы данных SQL.
Вопросы
- Как найти базы данных InnoDB в моем каталоге lost+found?
- Возможно ли, что fsck не сохранил мою базу данных SQL?
- Если да, могу ли я восстановить этот файл?
решение1
Попытка №1:
Может быть, он там и сейчас есть, просто его имя изменилось на fe /lost+found/#3456254 и т. п. На вашем месте я бы сделал рекурсию file -szL
для всего в /lost+found
и grep для innodb:
find /lost+found -type f|xargs -P 1 -n 500 file -szL|grep -i innodb
Если там уже есть база данных innodb, у вас есть данные для сохранения. Удачи!
Попытка №2:
Если в вашей базе данных много текстовых данных, вам также может помочь секторный гексагональный поиск.
решение2
ВОЗМОЖНО, что файл(ы) не удалось восстановить с помощью fsck, и они были удалены. Программа fsck только пытается восстановить и очень старается восстановить файлы настолько хорошо, насколько это возможно. Однако это ни в коем случае не является резервным копированием. Любое действие, выполняемое fsck, по сути, необратимо.
Я был бы очень осторожен, пытаясь использовать части базы данных MySQL, содержащиеся в каталоге lost+found, поскольку база данных содержится не в одном файле, а во многих файлах, которые должны быть «синхронизированы», чтобы была хоть какая-то надежда на восстановление базы данных в режиме, при котором обеспечивается хоть какая-то надежность или целостность данных.
Что касается восстановления файлов, извините, вам придется вернуться к резервным копиям, которые вы, вероятно, делали, поскольку данные были важны. В противном случае вам действительно не повезло.
Если данные настолько важны, то МОЖЕТ БЫТЬ, вы сможете попытаться заручиться помощью одной из многочисленных служб восстановления данных. Это дорого, а результаты далеки от совершенства.
решение3
Я думаю, вам не повезло. Единственный вариант, который у вас есть, — это пройтись по каталогу lost+found
и визуально осмотреть каждый файл, ища подсказки относительно его первоначального идентификатора.
В будущем
В блоге есть запись под названием:Обновлено: Автоматическое восстановление файлов из lost+found, в котором рассматриваются два инструмента, которые могли бы помочь в этой ситуации.
make-lsLR.sh
- регулярно вызывать (cron) для создания необходимых файлов, которые хранятся в /root/. Конечно, вы можете легко изменить местоположение и исключить другие каталоги из сканирования.
check_lost+found.py
- Второй скрипт должен быть запущен, когда ваш fsck умудрился испортить ваши файлы и сохранил их в каталоге lost+found. Он принимает 3 аргумента: 1) исходный каталог, где находится ваш испорченный каталог lost+found, 2) целевой каталог, в который будут сохранены данные, и 3) переключатель, чтобы это произошло на самом деле вместо холостого прогона.
Эти 2 скрипта работают вместе, первый нужно будет запускать периодически, чтобы составить опись файлов, которые присутствуют в вашей системе. Второй скрипт затем может использовать эту опись в случае, если вам нужно восстановить файлы из каталога lost+found
.