Создание 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
Источники:
aizaro@mail.ru 27.02.2017