24

Можем ли мы отменить операции, выполненные в терминале, например, удаление файла через rm?

Полученные решения:

  1. Aliasing
  2. Восстановить утилиты
  3. Утилиты резервного копирования
  4. LibTrash
  5. Управление версиями (FUSE)

12 ответов12

62

Нет общего "отмены" для каждой операции в терминале.  Если вы хотите восстановить файл после использования rm вам нужно поискать программное обеспечение для восстановления.

Вариант , чтобы предотвратить вас от будущих ошибок состоит в том, чтобы сделать alias эс альтернативных команд для удаления файлов.  Добавьте их в ваш ~/.bashrc и привыкните использовать их вместо rm .

  1. псевдоним rmi = 'rm -i'

    Если вы используете rmi , вам будет предложено подтвердить удаление в будущем.  Старайтесь не развивать привычку нажимать y сразу после того, как вы выполните команду rmi , так как это приведет к поражению цели.

  2. Вы также можете переместить файлы, удаленные командой trsh в терминале, в вашу корзину (в KDE и Gnome):

    alias trsh='mv --target-directory="$HOME/.Trash"'
    

    Если вы используете trsh , у вас будет ограниченная возможность "восстановить".  Остерегайтесь этого

    trsh dir1/file1 dir2/file1
    

    все еще может вызвать невосстановимую потерю данных.

6

Для командной строки нет корзины.

Вы можете попробовать различные утилиты, но нет гарантии, что они будут работать.

5

Вы можете использовать trash-cli, если вы используете KDE при запуске графического интерфейса. Это утилита командной строки для удаления / восстановления с использованием средств KDE.

4

Вы можете сделать rm псевдонимом для команды trash (сначала вам нужно будет установить trash .) Добавьте это к вашему ~/.bashrc :

alias rm='trash'

Это предпочтительнее alias rm='mv --target-directory=$HOME/.Trash' с тех пор, как ~/.Корзина НЕ является папкой мусора для гнома. ИМХО лучше, чтобы trash выяснил, где находится папка.

Кстати, я бы написал это в комментарии, но мне не хватает представителя.

3

Здесь есть более важный вопрос, на который стоит ответить. Команды оболочки не болтливы (они не проверяют дважды, что вы хотите), и они ожидают, что вы будете знать, что вы делаете. Это имеет основополагающее значение для их дизайна. Это особенность, а не ошибка.

Некоторые люди чувствуют себя мачо , когда они используют такие команды, которые я думаю , это довольно глупо, но важно понимать опасность. Вы можете нанести большой урон в терминале, даже если вы не root. Я думаю, что вы, вероятно, действительно просто заботились об rm , но так как вы сказали: «Можем ли мы отменить операции, выполняемые в терминале», я подумал, что это стоит сказать. Общий ответ - нет, вы не можете.

3

Еще два технических решения пока не названы:

  1. libtrash: динамическая библиотека, которая может быть предварительно загружена в вашу оболочку, которая перехватывает удаление / удаление системных вызовов и перемещает файлы в папку для мусора (во многом как псевдоним, но работает для любого приложения при предварительной загрузке).
  2. Файловая система управления версиями. Если вы удаляете (или редактируете, или копируете, или ...) файл, вы можете просто вернуться к старому состоянию. Это может быть сделано с файловой системой FUSE и одной из ее файловых систем управления версиями.
2

Вариант 1. См. Восстановление файлов Linux из файловой системы ext2. Эта страница указывает на программу, написанную Себастьяном Хетце из компании LunetIX, которая (как следует из названия) восстанавливает недавно удаленные файлы из файловой системы ext2. Пример использования:

# undelete -d /dev/hdc3 -a 10

Предупреждения:

  • Оригинальный веб-сайт исчез. Ссылка выше на интернет-архив.
  • Сайты на английском и немецком языках.
  • Как указано выше, инструмент разработан специально для файловой системы ext2. Это вряд ли будет работать на любом другом типе файловой системы; особенно не те, кроме Ext N.

Вариант 2: у меня на компьютере работает rsnapshot (rsync), который ежечасно делает снимки выбранных папок. Он постепенно делает это каждый час, 2 часа или все, что вы скажете CRON. После целого дня он перерабатывает эти снимки в один ежедневный снимок, а через 7 дней в неделю, и так далее, и так далее. Это позволяет мне возвращаться во времени примерно на месяц или около того на каждый час! Это довольно хорошо с дисковым пространством, поскольку создает символические ссылки на файлы, которые никогда не менялись ...

1

Восстановление с помощью grep в /dev/partition (Linux или Unix Восстановление удаленных файлов - восстановление файлов),

grep -b 'search-text' /dev/partition > file.txt

Просто попробуйте.

1

Для ext2 существуют утилиты для восстановления, но большинство других файловых систем Linux застряли в каменном веке и не имеют каких-либо расширенных функциональных возможностей. Печальное положение дел, когда гигантские диски имеют достаточно места, чтобы никогда больше не удалять файл, являются обычным явлением.

Итак, вы застряли с тремя вариантами:

  1. Регулярно делайте резервное копирование, например, с помощью такой команды:

    rsync -axvRP --backup --backupdir=/backup/incr/$(date -I) /home/ /backup/root/

  2. Используйте инструмент контроля версий, такой как git для всей вашей работы. Хотя это не защитит от сумасшедшего rm -r который убивает хранилище, оно защитит от обычных неприятностей, так как вы будете использовать git rm не raw rm .

  3. Будьте особенно осторожны и не слишком доверяйте rm -i , trash-cli и друзьям, так как большинство данных, которые вы потеряете в оболочке, вы потеряете не из-за случайного rm , а из-за неверно направленных каналов, ошибочно набранных выходных файлов, неверно направленных mv и вещи, то есть вещи, которые будут перезаписывать ваши данные, а не просто удалять их.

Сделайте все три для максимальной безопасности.

0

Для меня (opensuse leap 42.2, NTFS pendrive) PhotoRec - также создатели testdisk - работал :) Однако он не восстанавливал имена файлов.

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

Я установил его, используя стандартные репозитории в openSUSE

инструкция

0

отметьте это ... может быть полезным http://artmees.github.io/rm/

Предположим, вы сделали

rm very_important_file

из терминала. восстановление этого файла - утомительный и не всегда успешный процесс

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

rm very_important_file
mv very_important_file ~/.Trash/

эквивалентны. скрипт обрабатывает больше случаев и не изменяет ваш системный rm вообще, потому что он помещается в локальную папку bin пользователя, поэтому он затеняет системный rm, но не влияет на него и не отключает его

это усовершенствованный подход к псевдонимам, но без потери какой-либо функции

0

TestDisk может восстановить файлы из файловых систем FAT, exFAT, NTFS и ext2 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .