Один из пользователей в офисе случайно удалил кучку файлов с сетевого ресурса, которые оказались важными. Не буду здесь обсуждать, почему архивация этого ресурса не велась - моей вины здесь нет, не велась и всё. Пришлось восстанавливать данные, и, в итоге, они были восстановлены. Здесь укажу последовательность действий. Их немного.
В-первую очередь, надо отмонтировать раздел, чтоб никто не перезаписал то место на диске, где хранились стёртые данные.
umount /dev/mapper/partition
Затем желательно снять образ раздела, чтоб с ним было время спокойно поработать. Это можно сделать так:
dd if=/dev/mapper/partition |ssh username@bckhost "cat >~/partition.img"
или так:
dd if=/dev/mapper/partition |ssh username@bckhost "dd of=~/partition.img"
Теперь раздел можно замонтировать обратно, чтоб остальные пользователи продолжали работать, пока админ копается с восстановлением:
mount /dev/mapper/partition
Теперь можно заняться восстановлением. Первоначально я попытался использовать утилиту photorec из testdisk-а, так как я уже когда-то что-то восстанавливал с её помощью. Время сканирования образа зависит от его размера и у меня заняло долгие часы, а результат процесса представляет собой кучу каталогов с ничего не говорящими названиями типа "recup_dir.1". Имена файлов в этих калогах тоже могут быть изменены. В общем результат неудовлетворительный. Кстати, чтоб утилита photorec "увидела" образ, нужно явно указать путь к нему в командной строке (о чём можно узнать, запустив команду с ключом --help):
photorec /d recup_dir file.dd
Тем не менее утилита незаменима для восстановления, например, удалённых с флэшки фотографий - название утилиты об этом и говорит. Кроме того работает с большим количеством разделов, включая юниксовые и широко распространённый vfat(fat32).
Позже я нашёл необходимый мне инструмент. Им оказалась программа extundelete. Установка на Gentoo прошла быстро:
emerge -va extundelete
Программа работает с разделами ext3/ext4. Ключами командной строки можно задать время, начиная с которого(или не позже которого) восстанавливать удалённые файлы, а также некоторые другие параметры, например, восстановление одного конкретного файла. Я поступил проще, восстановил всё, что можно было:
extundelete --restore-all ~/partition.img
По-умолчанию, результатом команды будет каталог RECOVERED_FILES, являющийся корнем, относительно которого воссоздана структура вложенных каталогов с восстановленными файлами. Теперь результат достигнут: выбираем нужные файлы и копируем обратно на сетевой ресурс, с которого их удалили.
Сделал:
ОтветитьУдалитьsudo dd if=/dev/sdb6 | cat > partition.img
Получил файл размером с указанный раздел. Затем:
$ sudo extundelete --restore-all partition.img
WARNING: Extended attributes are not restored.
Loading filesystem metadata ... 79 groups loaded.
Loading journal descriptors ... 32255 descriptors loaded.
Searching for recoverable inodes in directory / ...
24884 recoverable inodes found.
Looking through the directory structure for deleted files ...
В итоге пустая папка:
$ ls -l RECOVERED_FILES/
итого 0
А дальше после "Looking through the directory structure for deleted files ..." что выдает? Там как раз должна быть информация либо об ошибках, либо о восстановлении.
ОтветитьУдалитьВо-первых, я бы посоветовал запускать команду от рута - без sudo. Так, кстати, и рекомендуется делать.
Программа extundelete, надо прямо сказать, довольно капризная - у меня частенько выдает segfault-ы, версия 0.2 тоже говорит о ее незрелости. Сейчас я создал тестовый образ: создал и удалил файл, и пытался восстановить. Получил ошибки при восстановлении:
Looking through the directory structure for deleted files ...
2 recoverable inodes still lost.
Unable to restore inode 13 (file.13): No data found.
Unable to restore inode 14 (file.14): No data found.
Вспомнил, что есть еще одна утилита для восстановления ext4magic, попробовал ее (подробнее можно почитать тут: http://openfacts2.berlios.de/wikien/index.php/BerliosProject:Ext4magic).
Вот так можно пролистать содержимое образа:
ext4magic -L testpartition.dd
Так можно восстановить конкретный файл:
ext4magic testpartition.dd -d RECOVERED_FILES/ -r -f zhen.jpg
Эта команда отработала корректно. Так что можно пробовать все три утилиты (photorec, extundelete, ext4magic) - какая-нибудь да сработает.