У каждого человека в жизни бывает такая ситуация, как rm -rf на папку, где этого делать не надо было.
Резервные копии — это хорошо, но что, если их у вас нет? Для систем Linux существует утилита Scalpel, позволяющая восстанавливать удаленные файлы по заданным шаблонам, в том числе с использованием регулярных выражений.
Scalpel — форк проекта Foremost (с версии 0.69), начавшего свою историю в 2005 году.
Имеет свой github хранилище и быстрее с точки зрения скорости и эффективности восстановления данных, чем Foremost. Говоря о разнице между этими двумя проектами, можно сказать, что Foremost, выпущенный после версии 0.69, имеет новые методы семантического восстановления данных.
Например, при восстановлении файлов JPEG заголовок этого файла используется для расчета соответствующего тела изображения, где Scalpel просто возьмет данные между заданными конечными и начальными подписями файла изображения.
Таким образом, можно сказать, что Foremost может более точно восстановить утерянные данные, когда Scalpel делает это гораздо быстрее.
Возможности, которые предоставляет Скальпель:
- Независимое восстановление файловой системы
- Установка минимального и максимального размера восстанавливаемого файла
- Использование многопоточности в многоядерных системах
- Асинхронные операции ввода-вывода, которые обеспечивают увеличение поиска шаблонов.
- Использование регулярных выражений TRE для поиска в начале и конце файла
- Возможность восстановления из вложенных структур данных.
- Для гиков доступна опция использования графического процессора, которая доступна только для Linux и требует предустановленного NVIDIA CUDA SDK и незначительных модификаций исходного кода (поиск по регулярным выражениям не работает с графическим процессором)
Приложение настраивается в файле /etc/scalpel/scalpel.conf, где задаются соответствующие шаблоны поиска файлов.
В нем вы можете увидеть готовые пресеты для поиска, например, по изображениям или файлам doc. Для восстановления утерянных данных необходимо раскомментировать соответствующие шаблоны и запустить приложение.
Если в файле нет шаблона нужного файла или, например, вы ищете определенный формат xml, то вам необходимо создать свой шаблон, описание которого аналогично правилам, представленным ниже.
Тип | С учетом регистра | Диапазон размеров | Заголовок | Нижний колонтитул | Вариант поиска |
---|---|---|---|---|---|
Ави | й | 50000000 | РИФ???ЭАВИ | ||
док | й | 10000000 | \xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00 | \xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00 | СЛЕДУЮЩИЙ |
й | 500000 | %EOF\x0d | ОБЕСПЕЧИТЬ РЕГРЕСС | ||
й | 500000 | %EOF\x0a | ОБЕСПЕЧИТЬ РЕГРЕСС | ||
техас | й | 300:50000 | /%.
{1,20}\. tex/ |
/%.
{1,20}\. tex\sEnd/ |
|
php | й | 100000 | ОБЕСПЕЧИТЬ РЕГРЕСС |
- Тип – имеет значение только в контексте программы, не имеет никакого отношения к восстановленным файлам и будет использоваться только при отображении журнала и названий каталогов в восстановленных данных.
Его не обязательно указывать, в этом случае просто поставьте NONE
- С учетом регистра – учитывать ли регистр при поиске по заданному шаблону
- Диапазон размеров – если указано простое число, то максимальный размер искомого файла, если через двоеточие, то min:max размер файла
- Заголовок , Нижний колонтитул – шаблоны поиска начала и конца файла.
Допустимо использование регулярных выражений TRE. Символ \s используется в качестве пробела; вы также можете использовать шестнадцатеричные и восьмеричные представления требуемых данных, например \x[0-f][0-f] или \[0-3][0-7][0-7]
- ОБЕСПЕЧИТЬ РЕГРЕСС — этот параметр следует использовать, если в файле можно использовать несколько шаблонов окончания.
Например, файлы PDF или PHP, которые могут содержать несколько скриптов, заключенных в рамки
- СЛЕДУЮЩИЙ — используется когда нужно получить данные между началом и первым концом файла, если конец файла не обнаружен то будет взята область размера указанного в поле размера
- FORWARD_NEXT — является стандартным поведением и его указание не является обязательным.
В этом варианте происходит строгая проверка шаблона, и если в заданном объеме памяти найдено начало файла и не найдено его окончание, то этот раздел исключается из результатов поиска, если не указана опция -b при запуске программы будет взят раздел заданного размера с соответствующим началом, а в журнале приложения [audit.txt] будет написано об обрезанном файле (chop столбец)
Для этого нужно в начале файла конфигурации написать
подстановочный знак SГде S — новое обозначение подстановочного знака в выражении поиска или используйте шестнадцатеричное представление этого символа, эквивалентное \0x3f или \063. Теперь о практике Предположим, мы удалили файлы, описанные шаблонами в таблице выше.
Запишем эти шаблоны в файл конфигурации (в качестве разделителя столбцов используется символ табуляции) /etc/scalpel/scalpel.conf и запустим восстановление (предварительно я подготовил образ с данными для восстановления)
После завершения выполнения в полученной папке мы найдем найденные файлы и Audit.txt, в котором будет содержаться краткая информация о найденных файлах, аналогичная приведенной ниже.root# scalpel MyDrive.img -o recover Written by Golden G. Richard III, based on Foremost 0.69. Opening target "/home/username/Documents/repair_files/test/MyDrive.img" Image file pass 1/2. MyDrive.img: 100.0% |*****************************************************| 500.0 MB 00:00 ETA Allocating work queues. Work queues allocation complete. Building carve lists. Carve lists built. Workload: avi with header "\x52\x49\x46\x46\x3f\x3f\x3f\x3f\x41\x56\x49" and footer "" --> 1 files doc with header "\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00" and footer "\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00" --> 2 files pdf with header "\x25\x50\x44\x46" and footer "\x25\x45\x4f\x46\x0d" --> 33 files pdf with header "\x25\x50\x44\x46" and footer "\x25\x45\x4f\x46\x0a" --> 19 files php with header "\x3c\x3f\x70\x68\x70" and footer "\x3f\x3e" --> 8 files Carving files from image. Image file pass 2/2. MyDrive.img: 100.0% *****************************************************| 500.0 MB 00:00 ETA Processing of image file complete. Cleaning up. Done. Scalpel is done, files carved = 63, elapsed = 6 seconds.
Scalpel version 1.60 audit file
Started at Wed Jan 7 12:50:52 2015
Command line:
scalpel MyDrive.img -o recover
Output directory: /home/username/Documents/repair_files/test/recover
Configuration file: /etc/scalpel/scalpel.conf
Opening target "/home/username/Documents/repair_files/test/MyDrive.img"
The following files were carved:
File
Теги: #linux #настройка Linux #Восстановление данных #скальпель
-
Обзор Lenovo Thinkpad Series Sl500 2746-3Su
19 Oct, 24 -
«Ксенофобия В Японии — Обычное Дело»
19 Oct, 24 -
Несъемная Живительная Повязка
19 Oct, 24 -
Drugme.ru: Медицинский Веб 2.0
19 Oct, 24