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

tune2fs extundelete wezen ext4 mkfs undelete e2fsck

Создание и настройка 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. Восстановление файлов http://help.ubuntu.ru/wiki/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
  2. Восстановление удаленных данных с помощью Scalpel 17.01.15 https://habrahabr.ru/post/247421/

aizaro@mail.ru 27.02.2017