восстановить только что удаленный файл на ext4 с помощью extundelete

54

Есть ли простой способ, extundeleteкак я могу попытаться восстановить файл, /var/tmp/test.isoкоторый я только что удалил?

(это не так важно, чтобы я начал перемонтировать диск только для чтения или тому подобное. Я также могу просто заново загрузить этот файл)

Я ищу простую команду, которую можно было бы попробовать, если мне удастся быстро восстановить ее.

Я знаю, что это возможно с перемонтированием диска только для чтения : (см. Как просто восстановить единственный файл на пустом диске, только что удаленный? )

Но возможно ли это как-то на все еще смонтированном диске?

rubo77
источник
Общий вопрос с любой утилитой: unix.stackexchange.com/questions/2677/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
Этот другой вопрос слишком широк. Здесь я ищу быстрое небезопасное решение без особых усилий (и меньше шансов на успех)
rubo77
Я не хотел подразумевать дублирование, но вы можете добавить его к вопросу, почему этого вопроса недостаточно.
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

36

Глядя на руководство по использованию extundelete, кажется, что вы можете удалить файлы несколькими способами.

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

extundelete предназначен для восстановления файлов из размонтированного раздела в отдельный (смонтированный) раздел. extundelete восстановит все найденные файлы в подкаталог текущего каталога с именем «RECOVERED_FILES». Чтобы запустить программу, введите «extundelete --help», чтобы увидеть различные доступные вам опции.

Типичное использование для восстановления всех удаленных файлов из раздела выглядит следующим образом:

    $ extundelete /dev/sda4 --restore-all

Восстановление одного файла

В дополнение к этому методу выделено использование командной строки:

--restore-file path/to/deleted/file
    Attemps to restore the file which was deleted at the given filename, 
    called as "--restore-file dirname/filename".

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

$ extundelete --restore-file /var/tmp/test.iso /dev/sda4

ПРИМЕЧАНИЕ. В обоих случаях вам необходимо знать устройство, /dev/sda4чтобы выполнить эту команду. Вам придется перемонтировать файловую систему только для чтения. Это одно из условий использования, extundeleteи нет никакого способа обойти это.

SLM
источник
2
да, но это все работает, только если я перемонтирую привод только для чтения
rubo77
1
@ rubo77 - правильно, пути нет.
ОДС
2
Это на самом деле работает для меня файловая система ext4, не перемонтируя ее только для чтения. Если вы попытаетесь сделать это без перемонтирования r / o, то вы получите предупреждение, которое, похоже, говорит вам, что ваша вероятность успеха ниже, если вы это сделаете. Если действительно очень важно восстановить файл, то, похоже, вам следует это сделать.
Бен Кроуэлл
Как и @BenCrowell, который я использовал без перемонтирования, но программа сообщает мне о повреждении данных, если я продолжу использовать hdd ... было недавно удалено, поэтому я просто
нажимаю
16

Типичный сценарий использования при удалении всех файлов включает необходимость восстановления всех файлов, удаленных в /dev/sdX1течение примерно последнего часа:

mount -o remount,ro /dev/sdX1
extundelete --restore-all --after $(date -d "-2 hours" +%s) /dev/sdX1
find RECOVERED_FILES/

Если удовлетворены восстановленными файлами:

mount -o remount,rw /dev/sdX1
sanmai
источник
mount: необходимо указать тип файловой системы
remount ожидает точку монтирования в качестве аргумента, а не устройства
не беспокойся, дитя
@ Don'tYouWorryChild mount -oпринимает либо реж или устройство, как указано вman mount
sanmai
Вместо того, чтобы вычитать 2 часа от даты, которую вы можете сделать, $(date -d "-2 hours" +%s)и вывод lsblk -pможет быть полезен, чтобы найти, где находится том, зашифрованный LUKS LVM-кэшированный том EXT4. ;)
LiveWireBT