Как восстановить удаленные данные в Linux
Нет лучшего средства восстановления потерянных данных, чем бэкап. Касается это и данных удаленных случайно, просто не всегда этот источник актуален: файл мог быть слишком "молод" для бэкапа, и если в резервную копию он не попал, а дело происходит в Linux, то остается только поторопиться с восстановлением данных: чем скорее начнем, тем выше вероятность успеха.
В зависимости от типа файловой системы и самого файла можно использовать разные инструменты. Для ext3/ext4 хорошие успехи демонстрирует утилита extundelete, для восстановления картинок (JPEG/PNG/GIF и т.д.) чаще всего используется foremost, но самая известная и универсальная - scalpel. Давайте начнем с нее.
Универсальный боец: восстановление с помощью scalpel
Для воскрешения мертвых данных утилита будет пользоваться базами данных заголовков, так что перед стартом надо будет внести типы и заголовки потерянных файлов в ее конфигурационный файл (/etc/scalpel/scalpel.conf или /etc/scalpel.conf). Вообще-то в нем уже по умолчанию указаны заголовки наиболее используемых типов файлов, так что нужные строки надо будет просто раскомментировать. Ну или собственные заголовки указать - по ситуации.
Чтобы установить утилиту:
sudo apt install scalpel
Предположим, мы удалили jpeg-картинку, и нам нужно ее восстановить. Мы открываем файл конфигурации и приводим нужную нам секцию к такому виду:
# GIF and JPG files (very common)
gif 5000000 \x47\x49\x46\x38\x37\x61 \x00\x3b
gif 5000000 \x47\x49\x46\x38\x37\x61 \x00\x3b
200000000 \xff\xd8\xff\xe0\x00\x10 xff\xd9
Запускаем сам scalpel:
sudo scalpel /dev/sda1 -o recover
/dev/sda1 - название устройства, на котором мы ищем удаленные файлы, опция -o указывает на папку, в которую нужно скинуть искомые файлы после восстановления. Естественно, чем меньше времени прошло с момента удаления, тем лучше - меньше шансов, что на место удаленного уже записано нечто актуальное.
С этим, кстати, связана одна небольшая профессиональная хитрость: можно создать с помощью команды dd образ устройства и восстанавливать файлы уже с него.
Качественно и нескоро: foremost
Scalpel — это форк foremost, и отличается в первую очередь скоростным восстановлением. Но если нам нужна не скорость, а качество, в первую очередь качество изображений - лучше воспользоваться foremost.
Команда установки:
sudo apt install foremost
Восстанавливаем изображения:
sudo foremost -t jpg,gif,png,bmp -i /dev/sda1 -o ~/recover
Дополнительно почитать о параметрах утилиты можно в справочной системе - man foremost