Лучшие практики по созданию псевдонима для команды rm и повышению ее безопасности

Лучшие практики по созданию псевдонима для команды rm и повышению ее безопасности

Некоторое время назад я по ошибке удалил свою домашнюю папку, потому что запустил ее rm -rf *не на том терминале, рабочим каталогом которого была домашняя папка!

Мне бы хотелось иметь псевдоним для rmкоманды, но это не тот случай.

Теперь я планирую создать скрипт как псевдоним для rm.

Можете ли вы предложить какие-либо лучшие практики?

Спасибо.

решение1

Если вы хотите персонализированный rm, не называйте его rmсвоим именем, myrm, deleteили как-то еще.

Псевдоним rm='rm -i'ужасен, потому что через некоторое время использования вы будете ожидать, rmчто по умолчанию вам будет предложено удалить файлы. Конечно, однажды вы запустите его с учетной записью, в которой не установлен этот псевдоним, и прежде чем вы поймете, что происходит, будет слишком поздно.

В любом случае, хороший способ подготовиться к потере или повреждению файлов — это сделать резервную копию.

Быстрая альтернатива, которая защитит вас от случайного удаления или перезаписи файлов, — это использование файловой системы, которая поддерживает неограниченное количество снимков, например ZFS. Если частые снимки делаются автоматически, вы можете восстановить файлы в том состоянии, в котором они были во время последнего снимка перед инцидентом.  

решение2

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

alias rm='echo "rm is disabled, use remove or trash or /bin/rm instead."'

Затем вы можете создать свой собственный безопасный псевдоним, например

alias remove='/bin/rm -irv'

или используйте trashвместо этого.

решение3

Вы можете попробовать использоватьtrashВместо этого. Просто не забывайте время от времени его опорожнять...

решение4

Я использую следующий скрипт.

#!/bin/sh

trash=$HOME/tmp
mv "$@" $trash
nohup find "$trash" -type f -atime +7 -exec /bin/rm '{}' \; 2>&1 &

Если вы случайно удалили файл, восстановите его из архива $HOME/tmp.

Скрипт перемещает удаленные файлы в tmpкаталог и удаляет их при следующем запуске скрипта удаления, если время доступа составляет 7 дней спустя (полуавтоматическая очистка каталога $HOME/tmp).

Связанный контент