Создание EXT4 и восстановление удаленных файлов

tune2fs ext4 undelete e2fsck scalpel extundelete

Создание и настройка ext4

Создаем и монтируем файловую систему:

$ mkfs.ext4 /dev/sdb1
$ mount /dev/sdb1 /mnt

Важно! По умолчанию создается файловая система без журналирования!
Это очень чревато, например тем, что будет невозможно восстановить файл в случае случайного удаления утилитой extundelete.
Чтобы включить журналирование - надо сделать дополнительно подстройку файловой системы с помощью утилиты tune2fs:

$ sudo tune2fs -O has_journal /dev/sdb1

Иногда, надо, наоборот, отключить журналирование (например, при использовании SSD-накопителей, чтобы увеличить их срок службы)

Тогда опция задается с префиксом отрицания “^”:

$ sudo tune2fs -O ^has_journal /dev/sdb1

При этом некоторые источники рекомендуют включить опцию journal_data_writeback (не проверено мной):

$ sudo tune2fs -o journal_data_writeback /dev/sdb1

Все дефолтные настройки для создания новых файловых систем хранятся в файле /etc/mke2fs.conf
Далее, можно выполнить проверку раздела:

$ sudo umount /dev/sdb1
$ sudo e2fsck -f /dev/sdb1

Проверим все опции файловой системы:

$ sudo tune2fs -l /dev/sdb1
.....
tune2fs 1.42.9

Восстановление

Все эксперименты проводил 27.02.2017 на ВМ sentec.wezen

extundelete

extundelete – утилита, позволяющая восстанавливать файлы, которые были удалены с разделов ext3/ext4.

$ sudo apt install extundelete

Сразу, как понял, что удалил нужный файл надо перемонтировать раздел в режиме “read only”

$ mount -o remount,ro /dev/sdb1

Если данные представляют значительную ценность, что необходимо сделать полный дамп диска:

$ dd bs=4M if=/dev/sdb1 of=partition.backup

scalpel

Для начала надо прописать в конфигурацию /etc/scalpel/scalpel.conf сигнатуру типа файлов для восстановления.
Можно снять комментарий с типовых расширений, но мне надо было восстановить tar.bzip файлы.  Выяснил с помощью HEX-редактора dhex какие начальные байты в файлах нужного типа и вписал следующее:

tbz     NONE    500000000:1200000000              \x42\x5a\x68\x39 
  • NONE - не учитывать регистр сигнатуры,
  • 500000000  - максимальный объем части файла для восстановления в байтах (500Mb)
  • 1200000000 - максимальный объем части файла для восстановления в байтах (1.2Gb)

Если задать малое значение, то восстановленный файл большего размера будет обрезан под этот размер.
Если файл при восстановлении займет весь максимальный размер - то это наверняка “испорченный” файл.

После настройки запускаем:

$ sudo scalpel /dev/sdb1 -o /home/dragon/scalpel

Источники:

  1. Восстановление файлов
  2. Восстановление удаленных данных с помощью Scalpel (17.01.15)

Опубликовано: 27.02.2017