Как избежать катастрофы с rm -rf: Безопасное удаление файлов с trash-cli
Команда rm -rf является одним из самых мощных и одновременно опасных инструментов в арсенале системного администратора Linux. Одно неверное движение или опечатка — и важные данные, а то и вся система, могут быть безвозвратно утеряны. Например, вместо rm -rf /var/ случайное добавление пробела (rm -rf /var /) может привести к удалению корневого каталога.
Чтобы избежать подобных катастроф и привнести привычную функциональность «корзины» из графических оболочек в командную строку, существует утилита trash-cli. Она не удаляет файлы навсегда, а перемещает их в специальный каталог, откуда их легко восстановить. Это обеспечивает дополнительный уровень безопасности, сравнимый с работой в графическом интерфейсе.
Установка trash-cli
Утилита trash-cli доступна для большинства популярных дистрибутивов Linux и macOS. Выберите подходящий метод установки:
Для Ubuntu/Debian
sudo apt install trash-cli
Для Arch Linux
sudo pacman -S trash-cli
Для macOS
Хотя macOS уже имеет свою корзину, trash-cli можно установить или обновить через Homebrew:
brew install trash-cli
Установка через pip (для любого Linux)
Если предпочитаете установку через Python-менеджер пакетов pip, это универсальный метод:
pip install trash-cli
Основные команды trash-cli
После установки вы можете использовать следующие команды для управления файлами и корзиной:
Перемещение файла или папки в корзину
Используйте trash-put вместо rm для «удаления» файлов и каталогов:
trash-put dangerous-file.txt
Просмотр содержимого корзины
Чтобы увидеть, какие файлы находятся в корзине:
trash-list
Восстановление файлов из корзины
Утилита trash-restore предлагает интерактивный режим для восстановления удаленных файлов. Она покажет список файлов и предложит выбрать, какой из них вернуть:
trash-restore
Очистка корзины
Вы можете удалить файлы из корзины, старше определенного количества дней, или полностью очистить ее:
Удаление файлов старше N дней (например, 7 дней)
trash-empty 7
Полная очистка корзины
Эта команда безвозвратно удалит все содержимое корзины:
trash-empty
Ключевая функция: Замена команды rm
Для максимальной безопасности, особенно для параноиков или тех, кто часто работает с критически важными данными, можно создать алиас для команды rm, чтобы она фактически вызывала trash-put. Это гарантирует, что даже привычные действия по удалению будут безопасными.
Добавьте следующую строку в ваш файл ~/.bashrc (или аналогичный для вашей оболочки, например, ~/.zshrc):
echo "alias rm='trash-put'" >> ~/.bashrc
source ~/.bashrc
После этого, команда rm будет перемещать файлы в корзину. Если вам действительно нужно удалить файл без возможности восстановления, используйте полный путь к исполняемому файлу /bin/rm или добавьте обратную косую черту перед командой: \rm.
Преимущества использования trash-cli
- Повышенная безопасность: Файлы не удаляются навсегда, их можно восстановить. Это критически важно для production-серверов или в скриптах, где ошибка может быть дорогостоящей.
- Привычный интерфейс: Концепция корзины интуитивно понятна пользователям, переходящим с графических ОС.
- Автоматизированная очистка: Возможность настроить автоматическую очистку старых файлов из корзины помогает управлять дисковым пространством.
- Спокойствие: Зная, что у вас есть «второй шанс», работа становится менее стрессовой, даже при дрожащих пальцах.
Недостатки и особенности
- Занимает место: Как и любая корзина,
trash-cliхранит удаленные файлы, потребляя дисковое пространство. Это требует периодической очистки. - Ограничения на файловых системах: Может не работать корректно на смонтированных файловых системах с отличающимися правами или специфическими конфигурациями.
- Привыкание: Для опытных пользователей, привыкших к немедленному удалению через
rm -rf, потребуется некоторое время, чтобы адаптироваться к новому поведению команды.
Использование trash-cli значительно снижает риск случайной потери данных, особенно в критически важных средах. Это простая, но мощная утилита, которая может спасти вашу систему от нежелательных последствий. Дополнительная информация и исходный код проекта доступны на GitHub.