Я иногда работаю с моим сервером через ssh. Я не хочу ничего терять из-за случайности rm
. Есть ли способ создать корзину для моего сервера? Я знаю, это звучит глупо, но я просто хочу знать, есть ли способ восстановить вещи, если я случайно удаляю файлы.
Я думал о добавлении нового псевдонима для rm
, но это не всегда будет работать. Я иногда использую SFTP-пакет Sublime, и я также могу случайно удалить вещи, используя его.
Что я могу сделать?
Большое спасибо заранее.
Если Вы добавляете псевдоним к ~./bashrc
, можно предотвратить удаление файлов. Можно исказить команду из ответа от Timothy Duane с
alias rm='trash-put'
Альтернатива:
alias rm='mv --verbose -f --backup=numbered --target-directory ~/.Trash/'
будет mv файлы к Вашему локальному Мусору и также создавать резервные копии, если уже будет файл с тем же именем.
, Если Вы хотите псевдоним глобально: добавьте его к /etc/bashrc
.
В первую очередь, Вы не хотите изменять поведение rm
глобально. Это просто повредит Ваш system1. Много вызовов программ rm
внутренне поэтому, если Вы изменяетесь, как это ведет себя они привычка' работа, и это может иметь неожиданные последствия. Необходимо будет ограничить себя защитой себя от rm
.
Можно, однако, добавить псевдоним к rm
, изменение его поведения, к Вашему ~/.bashrc
. Для ssh
сессии, необходимо было бы обычно добавлять его к Вашему .profile
вместо этого, но Ubuntu по умолчанию .profile
вызовы .bashrc
так, чтобы son't быть необходимым, если Вы не изменили его сами. В основном, если Вы не знаете то, о чем я говорю, просто используйте ~/.bashrc
. delete
команда на сеансе FTP является чем-то совершенно другим и не будет затронута.
Так, это сказало, вот несколько псевдонимов, которые Вы могли использовать:
rm -i
и rm -I
Как объяснено в man rm
, эти два флага защищают Вас от непреднамеренного удаления файлов. Можно использовать любого, в зависимости от уровня защиты раздражения, которую Вы хотите:
-i prompt before every removal
-I prompt once before removing more than three files, or when
removing recursively. Less intrusive than -i, while still giv‐
ing protection against most mistakes
Так, например, чтобы иметь rm
предложите Вам перед каждым удалением, добавьте эту строку к ~/.bashrc
и ~/.profile':
alias rm='rm -i'
Установите что-то как trash-cli
как уже предложено и затем делают rm
псевдоним к нему:
alias rm='trash-put'
Теперь, любые файлы Вы удаляете с rm
будет помещен в ~/.local/share/Trash/files/
.
Используйте самостоятельный подход с mv
как предложено @Rinzwind.
1 В зависимости от того, как точно Вы изменяете его поведение, оно могло бы быть прекрасным, но оно могло бы повредиться.
мусор-cli мог бы удовлетворить Вашим потребностям
sudo apt-get install trash-cli
http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html
Править:
Вы могли также сделать резервное копирование комнаты и затем заменить все случаи комнаты со сценарием
#!/usr/bin/python3
from sys import argv
from subprocess import Popen
args = ''
for arg in argv[1:]:
args += arg + ' '
Popen('trash '+args, shell=True)
и затем используйте
chmod +x rm
Хотя я понятия не имею, насколько безопасный это действительно.
Весь предложенный ответил, будет работать на Ваш опыт командной строки. Но позвольте мне согласиться со своим персональным предложением: не делайте этого. Никогда.
Объяснение: необходимо знать то, что Вы делаете; использование rm
думание, что существует система поддержки (с псевдонимом, глобальным изменением в исполняемом файле (1), другие вещи) заставит Вас стать уверенными, и Вы сделаете большие ошибки, когда система поддержки по любой причине не будет присутствовать---, который может быть обновлением, другой системой, или что бы то ни было.
rm
команда является (сложной) оболочкой вокруг удаления связь (), семейство системных вызовов---рассматривает его как сервис ядра Linux, который избавляется от файлов (2). Много программ будут просто использовать системный вызов, полностью обходя Ваши системы поддержки.
Например, команда
find . -name test2.aux -delete
будет непосредственно звонить удаляют связь, как Вы видите при помощи strace
на нем:
strace find . -name test2.aux -delete
...
unlinkat(AT_FDCWD, "test2.aux", 0) = 0
...
... и я держал пари, что сервер SFTP сделает то же. Это вне объема к "защите" Вашего псевдонима или даже rm
двоичная замена.
Даже простое mv
, cp
, или > file
может уничтожить файл вне Вашей системы поддержки.
Единственный сейф является хорошим резервным копированием (3). Учитесь делать это часто и проверять все Ваши команды дважды. Трижды при выполнении как корень.
Сноски:
(1) не делайте этого, если заменяющая команда не готова принять точно все флаги и угловые условия это rm
справиться.
(2) намного более сложный, чем это, действительно.
(3) или делая это на уровне ядра, вероятно, при помощи файловой системы, которая имеет некоторую долгосрочную память (файловая система управления версиями). Я не забываю работать с VMS в конце 80-х---, файловая система действительно помнила всю версию файла, добавляющего a"; 1 дюйм, "; 2 дюйма и т.д. в имени, на уровне ядра. Удобный, но кошмар обслуживания.