Можно ли восстановить файлы / каталоги, удаленные с помощью rm?

69

Можно ли восстановить файлы / каталоги, которые были удалены из терминала с помощью rmи rm -r? Если файл удален из графического интерфейса, его можно восстановить из корзины, но как восстановить файл, если он был удален с помощью утилиты rm ?.

user3215
источник
Для инструментов для восстановления удаленных файлов (в любой форме), вы можете взглянуть на этот вопрос askubuntu.com/q/3883
Decio Lira
Не используйте «rm», если вы хотите восстановить файлы в будущем. Вы можете использовать утилиту «rm-trash»: github.com/nateshmbhat/rm-trash
Natesh bhat

Ответы:

63

Для этого я использую trash-cliпакет и следующий псевдоним в моем~/.bashrc

alias rm=trash

И trash-cliпакет может быть установлен с помощью команды followoing: sudo apt-get install trash-cli.

Файлы, которые вы удалите, будут перемещены в корзину, и вы можете увидеть их в nautilus trashcan.

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

command rm something
'rm' something
\rm something

Есть также команды для доступа к мусорке от терминала trash-list, restore-trash(или trash-restore), trash-emptyустанавливаемый из пакета трэша-кли (то увидеть их страницу человека).

Последнее замечание: не рекомендуется использовать такой псевдоним для суперпользователя, поскольку он может мешать работе системы.

enzotib
источник
19
Это обходной путь, но на самом деле не отвечает на вопрос.
Евгений
Я думаю, что пользователь также хотел бы знать, есть ли какой-то метод для достижения того же поведения из командной строки. Если нет, я готов удалить свой ответ.
энзотиб
3
Это хорошо. Я получил некоторые знания.
user3215 13.10.10
27

Удаление его из терминала удаляет его навсегда - восстановление очень сложно, а иногда и невозможно.

Если ваш тип раздела ext3(проверьте его с помощью System->Administration->Disk Utility), то взгляните на ext3undel .

Если это не так (если вы установили Ubuntu с настройками по умолчанию ), попробуйте extundeleteпрограмму.

Хотя нет гарантии, что вы что-нибудь восстановите.

евгений
источник
Это было бы очень полезно для настольных изданий.
user3215 13.10.10
Я сомневаюсь, что это работает эффективно для SSD накопителей, но рад слышать иначе
Мэтт
13

Вы ищете: extundelete - утилита для восстановления удаленных файлов из раздела ext3 / ext4

Чтобы найти такой пакет, вы можете попробовать: apt-cache search undelete

Для использования утилиты установите ее с помощью: sudo apt-get install extundelete

После установки обратитесь man extundeleteи внимательно изучите его.

Х.-Дирк Шмитт
источник
6

Как альтернатива, если вы точно знаете, какой это тип файла ...

sudo apt-get install foremost

Теперь откройте, /etc/foremost.confи вы увидите длинный список закомментированных строк. Если ваш тип файла существует, раскомментируйте строку (вы можете также удалить ненужные строки).

Если ваш тип файла не существует, добавьте свою собственную строку. Скажем, я хочу восстановить файл .css и знаю, что он около 40K. Я мог бы добавить это:

css     n       40000   Theme\sName:     Plugin\sFixes

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

Используйте следующую команду (отредактируйте диск соответственно. Можно проверить с помощью dfкоманды)

foremost -v -T -c /etc/foremost.conf -i /dev/sda -o output

Что будет дальше, так это то, что прежде всего создаст папку с именем output и сбросит все восстановленные данные (в данном случае) в эту папку. Оттуда вы можете использовать diffили meldсравнить восстановленные «файлы» и посмотреть, какие из них наиболее актуальны.

Рувим Л.
источник
большое спасибо. Это сработало отлично. Я случайно удалил свой phpисходный файл, используя rm -fr php/2 phpфайла. Менее чем за 2 минуты они восстановились отлично. В .confфайл я добавил:php n 40000 <?php ?> ASCII
Шакиба Мошири
5

Говоря в самых абстрактных терминах, всякий раз, когда вы удаляете файл в графическом интерфейсе, файл «перемещается» в специальный «буфер», называемый каталогом trash. Вы можете найти его в своем homeкаталоге ~/.local/share/Trash/. Файлы, «удаленные» из этого каталога, будут действительно удалены. Это реальное удаление - то, что происходит, когда вы используете rmфайл.

Восстановить удаленные файлы крайне сложно. Файлы в файловой системе представлены как узлы в B-дереве или тому подобное. Когда файл удаляется с помощью rm, дерево обновляется, количество жестких ссылок уменьшается, соответствующая запись в списке каталогов удаляется. Если ваш файл имел жесткую ссылку, он абсолютно безопасен. Вы можете сделать file / -samefile filename. Вы можете искать файл, если вы также помните его номер инода (это вряд ли имеет место).

Другой случай, когда ни одна из вышеперечисленных возможностей не верна. Всякий раз, когда вы rmфайл, запись файла в каталоге удаляется, уменьшая количество жестких ссылок на одну. И если количество жестких ссылок падает до нуля, то указатель на файл в индексе удаляется или помечается для удаления. В любом случае, ваш файл «все еще» находится на жестком диске. Файл фактически стирается с жесткого диска только при последующем перемонтировании. Восстановление файлов в такое время чрезвычайно сложно, включает в себя просмотр дерева файловой системы и инодов, представляющих фактические расположения дисковых блоков. Есть популярный инструмент, о котором я слышал, но никогда не использовал его, называется extundelete. Хотя нет никакой гарантии, стоит попробовать.

После того, как вы успешно восстановите свои файлы, не спешите делать регулярные резервные копии. Это очень просто в Ubuntu.

Джон Строуд
источник
2

Извините, но файлы, удаленные из командной строки с помощью «rm» и «rm -f», обходят «мусорную корзину», которую вы имеете на рабочем столе Gnome.

Вы также можете спросить, есть ли какие-нибудь инструменты extfs "undelete", такие как для FAT и NTFS. (Я не знаю ни одного, но я был бы удивлен, если бы не было ни одного.)

Stéphane
источник
Ох ... все в порядке! Я думал, что это может быть восстановлено из какого-то места.
user3215 13.10.10
1

используйте утилиту " rm-trash ", которая обрабатывает их для последующего извлечения и поддерживает все параметры команды "rm".

sudo add-apt-repository ppa:nateshmbhat/rm-trash
sudo apt-get update
sudo apt-get install rm-trash

"рм-мусор" это

  • предназначен для использования вместо рм
  • обрабатывает все параметры, которые может использовать rm
  • обрабатывает столкновения имен файлов с файлами, уже находящимися в корзине
  • автоматически обрабатывает некоторые проблемы с разрешениями
  • если rm вызывается из любого другого скрипта или косвенно, то системная команда 'rm' используется автоматически
  • показывает соответствующие сообщения об ошибках, такие как те, которые возникают в rm
Натеш бхат
источник