Как предотвратить случайный rm -rf /*?

Я просто запускал rm -rf /* случайно, но имел в виду rm -rf ./* (обратите внимание на звезду после косой черты).

alias rm = 'rm -i' и - preserve-root по умолчанию не сохранили меня, поэтому есть ли какие-либо автоматические гарантии для этого?


Я не был root и немедленно отменил команду, но были какие-то расслабленные разрешения где-то или что-то, потому что я заметил, что моя подсказка Bash сломалась. Я не хочу полагаться на разрешения и не быть root (я мог бы сделать ту же ошибку с sudo), и я не хочу охотиться за таинственными ошибками из-за одного отсутствующего файла где-то в системы, поэтому резервные копии и sudo хороши, но я хотел бы что-то лучше для этого конкретного случая.


О мышлении дважды и использовании мозга. Я использую это на самом деле! Но я использую его для решения сложной задачи программирования с участием 10 разных вещей. Я погружен в эту задачу достаточно глубоко, нет никакой мозговой силы для проверки флагов и путей, я даже не думаю о командах и аргументах, я думаю с точки зрения таких действий, как «пустой текущий каталог», другая часть моего мозга переводит их в команды, а иногда делает ошибки. Я хочу, чтобы компьютер исправил их, по крайней мере, опасные.

155 голосов | спросил Valentin Nemcev 2 FriEurope/Moscow2011-12-02T21:09:51+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 21:09:51 +0400 2011, 21:09:51

29 ответов


212

Один из трюков, которым я следую, - это поставить # в начале, используя команду rm.

root @ localhost: ~ # #rm -rf /

Это предотвращает случайное выполнение rm в неправильном файле /каталоге. После проверки удалите # с самого начала. Этот трюк работает, потому что в Bash слово, начинающееся с #, вызывает игнорирование этого слова и всех остальных символов в этой строке. Поэтому команда просто игнорируется.

ИЛИ

Если вы хотите предотвратить какой-либо важный каталог, есть еще один трюк.

Создайте файл с именем -i в этом каталоге. Как создать такой нечетный файл? Использование touch - -i или touch ./- i

Теперь попробуйте rm -rf *:

sachin @ sachin-ThinkPad-T420: ~ $ touch {1..4}
sachin @ sachin-ThinkPad-T420: ~ $ touch - -i
sachin @ sachin-ThinkPad-T420: ~ $ ls
1 2 3 4 -i
sachin @ sachin-ThinkPad-T420: ~ $ rm -rf *
rm: удалить обычный пустой файл `1 '? N
rm: удалить обычный пустой файл `2 '?

Здесь * расширяет -i в командной строке, поэтому ваша команда в конечном итоге становится rm -rf -i. Таким образом команда выведет запрос перед удалением. Вы можете поместить этот файл в код /, /home /, /etc / и т. Д.

ИЛИ

Используйте - preserve-root как вариант для rm. В rm, включенном в новые пакеты coreutils, этот параметр по умолчанию.

- сохранить корень
              не удаляйте `/'(по умолчанию)

ИЛИ

Используйте safe-rm

Выдержка из веб-сайта:

  

Safe-rm - это средство безопасности, предназначенное для предотвращения случайного удаления   важных файлов, заменив /bin /rm на обертку, которая проверяет   данные аргументы против настраиваемого черного списка файлов и   которые никогда не должны удаляться.

     

Пользователи, которые пытаются удалить один из этих защищенных файлов или   каталоги не смогут этого сделать, и будет показано предупреждение   вместо этого:

$ rm -rf /usr
Пропуск /usr
ответил Odin 10 AM000000120000002231 2010, 00:26:22
41

Ваша проблема:

  

Я просто запускал rm -rf /* случайно, но я имел в виду rm -rf ./* (обратите внимание на звезду после косой черты).

Решение: Не делайте этого! В практическом плане не используйте ./ в начале пути. Слэш не добавляет значения команде и вызывает только путаницу.

./* означает то же самое, что и *, поэтому приведенная выше команда лучше написана как:

rm -rf *

Вот связанная проблема. Я часто вижу следующее выражение, где кто-то предположил, что для FOO установлено что-то вроде /home /щенки. Я видел это только сегодня, в документации от крупного поставщика программного обеспечения.

rm -rf $ FOO /

Но если FOO не установлен, это будет оцениваться как rm -rf /, который попытается удалить все файлы в вашей системе. Конечная косая черта не нужна, так как практика не использует ее.

Следующее будет делать то же самое и с меньшей вероятностью испортит вашу систему:

rm -rf $ FOO

Я усвоил эти советы. Когда у меня была первая учетная запись суперпользователя 14 лет назад, я случайно запустил rm -rf $ FOO / из сценария оболочки и уничтожил систему. 4 других системных администратора посмотрели на это и сказали: «Да. Каждый делает это один раз. Теперь вот ваш установочный носитель (36 дискет). Пойдите, исправьте это. '

Другие люди здесь рекомендуют такие решения, как - preserve-root и safe-rm. Однако эти решения отсутствуют для всех Un * xe-переменных и могут не работать на Solaris, FreeBSD & Mac OS X. Кроме того, safe-rm требует, чтобы вы устанавливали дополнительные пакеты на каждую используемую вами Linux-систему. Если вы полагаетесь на safe-rm, что происходит, когда вы запускаете новое задание, и у них нет установленного safe-rm? Эти инструменты являются костылем, и гораздо лучше полагаться на известные значения по умолчанию и улучшать ваши рабочие привычки.

ответил Stefan Lasiewski 3 SatEurope/Moscow2011-12-03T03:36:26+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 03:36:26 +0400 2011, 03:36:26
30

Так как это на «Serverfault», я бы хотел сказать следующее:

Если у вас есть десятки или более серверов с большой командой администраторов /пользователей, кто-то собирается rm -rf или chown неправильный каталог.

У вас должен быть план восстановления поврежденной службы с минимальным MTTR.

ответил Not Now 2 FriEurope/Moscow2011-12-02T22:58:55+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 22:58:55 +0400 2011, 22:58:55
23

Лучшие решения включают изменение ваших привычек, а не использование rm напрямую.

Один из подходов - сначала запустить echo rm -rf /stuff /with /wildcards *. Убедитесь, что вывод из подстановочных знаков выглядит разумным, а затем используйте историю оболочки для выполнения предыдущей команды без echo.

Другим подходом является ограничение команды echo на случаи, когда ослепительно очевидно, что вы будете удалять. Вместо того, чтобы удалять все файлы в каталоге, удалите каталог и создайте новый. Хорошим методом является переименование существующего каталога на DELETE-foo, затем создайте новый каталог foo с соответствующими разрешениями и, наконец, удалите DELETE-foo . Преимущество этого метода заключается в том, что команда, введенная в вашу историю, - это rm -rf DELETE-foo.

cd ..
mv somedir DELETE-somedir
mkdir somedir # или rsync -dgop DELETE-somedir somedir для сохранения разрешений
ls DELETE-somedir # просто чтобы убедиться, что мы удаляем правильную вещь
rm -rf DELETE-somedir

Если вы действительно настаиваете на удалении кучи файлов, потому что вам нужно, чтобы каталог оставался (потому что он всегда должен существовать или потому, что у вас не будет разрешения на его воссоздание), переместите файлы в другой каталог и удалите этот каталог.

mkdir ../DELETE_ME
mv * ../DELETE_ME
ls ../DELETE_ME
rm -rf ../DELETE_ME

(Нажмите клавишу Alt + . .)

Удаление каталога изнутри было бы привлекательным, потому что rm -rf., следовательно, имеет низкий риск опечаток. К сожалению, типичные системы не позволяют делать это. Вы можете rm -rf - "$ PWD", с более высоким риском опечаток, но большинство из них приводят к удалению ничего. Помните, что это оставляет опасную команду в истории вашей оболочки.

Всякий раз, когда вы можете, используйте контроль версий. Вы не rm, вы cvs rm или что-то еще, и это невозможно.

У Zsh есть опции, предлагающие вам перед запуском rm с аргументом, в котором перечислены все файлы в каталоге: rm_star_silent (по умолчанию) приглашения перед выполнением rm независимо от /* и rm_star_wait (по умолчанию отключено) добавляет 10-секундную задержку, в течение которой вы не можете подтвердить. Это ограниченное использование, если вы намерены удалить все файлы в какой-либо директории, потому что вы будете ожидать приглашения уже. Это может помочь предотвратить опечатки, такие как rm foo * для rm foo *.

Существует много других решений, связанных с изменением команды rm. Ограничение этого подхода заключается в том, что в один прекрасный день вы окажетесь на машине с реальным rm, и вы автоматически вызовете rm, безопасный в ожидании подтверждения | И в следующем случае вы будете восстанавливать резервные копии.

ответил Gilles 3 SatEurope/Moscow2011-12-03T00:42:11+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 00:42:11 +0400 2011, 00:42:11
18

Вы всегда можете сделать псевдоним, как вы упомянули:

what_the_hell_am_i_thinking () {
   эхо "Стоп". > & амп; 2
   Эхо «Серьезно». > & амп; 2
   echo «Ты почти взорвал свой компьютер». > & амп; 2
   echo «ЧТО БЫЛО ДУМАЕТ!?!?!» > & амп; 2
   эхо "Пожалуйста, предоставьте себе предписание:"
   читать
   эхо: «Извините, это жалкое оправдание, вас уволили».
   сон 2
   telnet nyancat.dakko.us
}

alias rm -fr /* = "what_the_hell_am_i_thinking"

Вы также можете интегрировать его с клиентом twitter для командной строки, чтобы предупредить своих друзей о том, как вы почти унизили себя, протерев свой жесткий диск с помощью rm -fr /* как root.

ответил Naftuli Kay 3 SatEurope/Moscow2011-12-03T02:33:14+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 02:33:14 +0400 2011, 02:33:14
15

Да. Не работайте как root и всегда думайте дважды, прежде чем действовать.

Кроме того, посмотрите на что-то вроде https://launchpad.net/safe-rm ,

ответил Sven 2 FriEurope/Moscow2011-12-02T21:16:31+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 21:16:31 +0400 2011, 21:16:31
15

Самый простой способ предотвратить случайный rm -rf /* - избежать использования команды rm! На самом деле, я всегда испытывал искушение запустить rm /bin /rm, чтобы полностью избавиться от этой команды! Нет, я не увлекаюсь.

Вместо этого используйте -delete команды find , но перед удалением файлов я рекомендую просмотреть файлы, которые вы будете удалять:

найти | Меньше

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

find. | Меньше

После того, как вы уверены, что это файлы, которые вы хотите удалить, вы можете добавить опцию -delete:

найти путь /в /файлы -delete

Таким образом, не только find безопаснее использовать, но и более выразительно , поэтому, если вы хотите удалить только определенные файлы в иерархии каталогов, которые соответствуют определенному шаблону, вы можете использовать такое выражение для предварительного просмотра, а затем удалить файлы:

найти путь /to /files -name '* ~' | Меньше
find path /to /files -name '* ~' -delete

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

ответил aculich 26 FebruaryEurope/MoscowbSun, 26 Feb 2012 09:50:21 +0400000000amSun, 26 Feb 2012 09:50:21 +040012 2012, 09:50:21
14

В этой теме есть очень плохие советы, к счастью, большинство из них было отклонено.

Прежде всего, когда вам нужно быть root, станьте root-sudo, и различные трюки с псевдонимами сделают вас слабыми. И что еще хуже, они сделают вас небрежными. Научитесь делать все правильно, остановитесь в зависимости от псевдонимов, чтобы защитить вас. Однажды вы получите root на коробке, у которой нет тренировочных колес и что-то взорвите.

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

В-третьих - вы вряд ли когда-либо действительно должны rm -rf - скорее всего, вы хотите mv что-то something.bak или mkdir _trash & & mv something _trash /

Четвертый - всегда ls ваш подстановочный знак перед rm - Нет ничего сумасшедшего в том, чтобы смотреть на что-то, прежде чем уничтожить его навсегда.

ответил eventi 4 SunEurope/Moscow2011-12-04T02:44:41+04:00Europe/Moscow12bEurope/MoscowSun, 04 Dec 2011 02:44:41 +0400 2011, 02:44:41
11

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

Я всегда делаю echo foo * /[0-9] * {bar, baz} *, чтобы посмотреть, что будет соответствовать регулярному выражению. Как только у меня будет выход, я вернусь с редактированием в командной строке и измените echo на rm -rf. I никогда не используйте rm -rf для непроверенного регулярного выражения .

ответил MadHatter 2 FriEurope/Moscow2011-12-02T23:57:10+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 23:57:10 +0400 2011, 23:57:10
9

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

Например, если вы работаете с исходным кодом, используйте инструмент, например git, чтобы отразить код и сохранить историю на другом компьютере. Если вы работаете над документами, у вас есть сценарий, который rsync передает ваши документы на другой компьютер.

ответил David Schwartz 2 FriEurope/Moscow2011-12-02T23:05:38+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 23:05:38 +0400 2011, 23:05:38
6

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

Одна такая утилита, trash-cli, обсуждается в Unix StackExchange, .

ответил nnutter 4 SunEurope/Moscow2011-12-04T03:02:11+04:00Europe/Moscow12bEurope/MoscowSun, 04 Dec 2011 03:02:11 +0400 2011, 03:02:11
3

Одним из важных ключевых факторов, позволяющих избежать подобных ошибок, является не вход в систему с использованием учетной записи root. Когда вы входите в систему с использованием обычного не-привилегированного пользователя, вам нужно использовать sudo для каждой команды. Итак, вы должны быть более осторожными.

ответил Khaled 2 FriEurope/Moscow2011-12-02T21:15:21+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 21:15:21 +0400 2011, 21:15:21
3

Когда я удаляю каталог рекурсивно, я помещаю -r и -f, если это применимо, в команде end команды, например rm /foo /bar -rf. Таким образом, если я случайно нажимаю Enter слишком рано, не набрав весь путь, команда не рекурсивна, поэтому, вероятно, она будет безвредной. Если я нажимаю Enter при попытке ввода косой черты после /foo, я написал rm /foo, а не rm -rf /foo.

Это хорошо работает в системах, использующих GNU coreutils, но утилиты на некоторых других Unix-устройствах не позволяют размещать варианты в конце. К счастью, я не очень часто использую такие системы.

ответил Wyzard 3 SatEurope/Moscow2011-12-03T18:00:02+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 18:00:02 +0400 2011, 18:00:02
2

Это может быть сложно, но вы можете настроить роли в SELinux, так что даже если пользователь станет root через sudo su - (или plain su), возможность удаления файлов может быть ограничена (вам нужно войти в систему напрямую с правами root, чтобы удалять файлы). Если вы используете AppArmor, вы можете сделать что-то подобное .

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

ответил Rilindo 2 FriEurope/Moscow2011-12-02T21:37:53+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 21:37:53 +0400 2011, 21:37:53
2

Избегайте использования globbing . В Bash вы можете установить noglob. Но опять же, когда вы переходите к системе, где noglob не задан, вы можете забыть об этом и действовать так, как если бы это было.

Установите noclobber, чтобы предотвратить mv и cp от уничтожения файлов.

Используйте файловый браузер для удаления. Некоторые файловые браузеры предлагают trashcan (например, Konqueror ).

Другим способом избежать глобализации является следующее. В командной строке I echo filenamepattern>> gt; ххх. Затем я редактирую файл с Vim или vi, чтобы проверить, какие файлы должны быть удалены (смотрите символы шаблона имени файла в filenmates.), А затем используйте % s /^ /rm -f /, чтобы перевернуть каждый строка в команду удаления. Источник xxx. Таким образом вы увидите каждый файл, который будет удален, прежде чем делать это.

Переместите файлы в «чердачный» каталог или tarball. Или используйте управление версиями (как сказано выше).

ответил Andrej Panjkov 4 SunEurope/Moscow2011-12-04T09:47:15+04:00Europe/Moscow12bEurope/MoscowSun, 04 Dec 2011 09:47:15 +0400 2011, 09:47:15
2

ZSH спрашивает меня (по умолчанию) перед выполнением rm -rf *.

ответил math 25 Mayam12 2012, 10:25:33
1

Вне chattr не существует большого количества гарантий, позволяющих root запускать такую ​​команду. Вот почему правильные группы и осторожные команды важны при запуске привилегированных.

В следующий раз; выделите файлы, которые вы планируете удалить - опустите 'f' из rm -rf или используйте find и передайте его в xargs rm

ответил thinice 2 FriEurope/Moscow2011-12-02T21:17:23+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 21:17:23 +0400 2011, 21:17:23
1

Некоторые псевдонимы безопасности для других команд, чтобы предотвратить подобные катастрофы, нашли здесь :

# функции безопасности
псевдоним cp = 'cp -i'
alias mv = 'mv -i'
alias rm = 'rm -I' # 'rm -i' запрашивает для каждого файла
alias ln = 'ln -i'
alias chown = 'chown --preserve-root'
alias chmod = 'chmod --preserve-root'
alias chgrp = 'chgrp --preserve-root'

Обратите внимание на верхний регистр -I, он отличается от -i:

  

подскажите один раз перед удалением более трех файлов или при удалении   рекурсивно. Меньше навязчивых, чем -i, при этом сохраняя защиту   против большинства ошибок

ответил Valentin Nemcev 3 SatEurope/Moscow2011-12-03T15:50:38+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 15:50:38 +0400 2011, 15:50:38
1

Я обычно использую флаг -v, чтобы увидеть, что удаляется, и быстро получить ^ C, если у меня есть какие-либо сомнения. Не лучший способ предотвратить bad rm, но это может быть полезно для ограничения ущерба в случае, если что-то пойдет не так.

ответил a3nm 4 SunEurope/Moscow2011-12-04T14:32:42+04:00Europe/Moscow12bEurope/MoscowSun, 04 Dec 2011 14:32:42 +0400 2011, 14:32:42
1

Мой процесс удаления на компьютерах, основанных на Unix, выглядит следующим образом.

  • Введите ls /path /to /intented /file_or_directory в окне терминала, а затем нажмите return (или Tab, по желанию), для просмотра списка файлов.

Если все выглядит хорошо,

  • нажмите клавишу стрелка вверх, чтобы снова вернуть код /path /to /intented /file_or_directory из истории терминала.

  • замените ls на rm или rm -r или rm -rf, если это необходимо. Мне лично не нравится использовать флаг -f.

Этот процесс проверки также предотвращает преждевременное выполнение команды rm, что случилось со мной, прежде чем я начал следовать этому процессу.

ответил Mohit Ranka 4 SunEurope/Moscow2011-12-04T00:26:36+04:00Europe/Moscow12bEurope/MoscowSun, 04 Dec 2011 00:26:36 +0400 2011, 00:26:36
1

Если у вас нет желания приобретать новые привычки прямо сейчас, .bashrc /.profile - хорошее место, чтобы добавить некоторые тесты, чтобы проверить, собираетесь ли вы сделать что-то глупое. Я понял, что в функции Bash я мог бы grep для шаблона, который может испортить мой день и придумал следующее:

alias rm = 'set -f; myrm '#set -f отключает расширение подстановочных знаков, необходимо сделать это за пределами
                        #, чтобы мы получили «сырую» строку.
myrm () {
    ARGV = "$ *"
    set + f #положим набор -f
    если echo "$ ARGV" | grep -e '-rf /*' \
                           «Еще один страшный шаблон»
    тогда
        echo «Не эксплуатируйте тяжелую технику, находясь под воздействием этого лекарства»
        возвращение 1
    еще
        /bin /rm $ @
    фи
}

Хорошо, что это только Bash.

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

ответил kln 4 SunEurope/Moscow2011-12-04T09:16:36+04:00Europe/Moscow12bEurope/MoscowSun, 04 Dec 2011 09:16:36 +0400 2011, 09:16:36
1

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

В виртуальной машине Linux Mint 17.1 было протестировано следующее (предупреждение для тех, кто не знаком с этими командами: НЕ ДЕЛАЙТЕ ЭТО! На самом деле даже те, кто знаком с этими командами, /вероятно, никогда не сделают этого, чтобы избежать катастрофических потерь данных)

Текстовая версия (сжатая):

$ cd /
$ sudo safe-rm -rf *
$ ls
bash: /bin /ls: Нет такого файла или каталога

Версия изображения (полная):

введите описание изображения здесь

ответил Miles Wolbe 9 AMpThu, 09 Apr 2015 07:30:15 +030030Thursday 2015, 07:30:15
1

Мне нравится подход к окну корзины.

Обычно я создаю каталог с именем «/tmp /recyclebin» для всех, что мне нужно удалить:

mkdir /tmp /recyclebin

И никогда не используйте rm -rf, я всегда использую:

mv target_folder /tmp /recyclebin

Затем позже я опустошаю recyclebin с помощью скрипта или вручную.

ответил Basil A 18 FriEurope/Moscow2015-12-18T16:45:57+03:00Europe/Moscow12bEurope/MoscowFri, 18 Dec 2015 16:45:57 +0300 2015, 16:45:57
0

Хе-хе (непроверенный и несколько довольный!):

$ cat /usr /local /bin /saferm

#! /Бен /Баш

/bin /ls - "$ @"

echo «Это те файлы, которые вы собираетесь удалить».
echo "Вы хотите продолжить (y /N)?"

читать пользовательский ответ

если ["$ userresponse" -eq "y"]; тогда

  эхо "Выполнение ...."
  /bin /rm - "$ @"

фи

И затем:

alias rm = "/usr /local /bin /saferm"

Реально, перед выполнением такого рода операций с помощью glob вы должны иметь ментальную паузу, выполняете ли вы ее как root, добавляете «sudo» к ней и т. д. Вы можете запустить «ls» в том же glob, и т. д., но, мысленно, вы должны остановиться в течение секунды, убедитесь, что вы набрали то, что хотите, убедитесь, что вы хотите, на самом деле, что вы хотите, и т. д. Я полагаю, что это то, что в основном изучается, уничтожая что-то в первый год как Unix SA, так же, как горячая горелка - хороший учитель, рассказывающий вам, что что-то на плите может быть горячим.

И убедитесь, что у вас хорошие резервные копии!

ответил cjc 2 FriEurope/Moscow2011-12-02T21:42:43+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 21:42:43 +0400 2011, 21:42:43
0

Кроме того, не как защита, а как способ выяснить, какие файлы были удалены до того, как вы нажмете ^ C, вы можете использовать locate базу данных (конечно, только если она была установлена ​​и сохранилась < код> гт)

Я узнал об этом из этого сообщения в блоге

ответил Valentin Nemcev 3 SatEurope/Moscow2011-12-03T15:07:10+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 15:07:10 +0400 2011, 15:07:10
0

Просто используйте ZFS для хранения файлов, которые вам нужны для предотвращения случайного удаления, и у вас есть демон:

  • регулярно делает снимки этой файловой системы
  • удаляет старые /ненужные снимки.

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

ответил jlliagre 4 SunEurope/Moscow2011-12-04T01:27:26+04:00Europe/Moscow12bEurope/MoscowSun, 04 Dec 2011 01:27:26 +0400 2011, 01:27:26
0

не столько ответ, сколько подсказка, я всегда делаю rm (dir) -rf not rm -rf (dir), то есть: не добирайтесь до ядерного последний возможный момент.

Это помогает смягчить ситуации, при которых вы толкните пальцем имя dir таким образом, что оно по-прежнему является допустимым удалением, например, проскальзывание и нажатие клавиши ввода.

ответил Sirex 9 AMpThu, 09 Apr 2015 07:39:34 +030039Thursday 2015, 07:39:34
0

Я думаю, что это мощный предупреждающий наконечник с ярлыком * расширения в оболочке:

Сначала введите rm -rf * или rm -rf your /path /*, НЕ НАЙТИ Enter. (конечно, у вас должна быть привычка ухаживать, чтобы не нажимать Enter быстро /случайно при использовании rm -rf)

Затем нажмите Alt-Shift-8 (т. е. Alt-Shift - *), чтобы развернуть «*» подстановочный знак явно в bash. Это также позволяет избежать повторного ввода команды «rm -rf *» при навигации по истории.

Наконец, после проверки, что расширение имеет нужные файлы /каталоги, нажмите Enter.

Готово.

ответил Johnny Wong 22 22016vEurope/Moscow11bEurope/MoscowTue, 22 Nov 2016 07:12:14 +0300 2016, 07:12:14
0

В случае, если это поможет кому-то в этом случае:

1. Используйте rmsafe:

Он перемещает файлы в папку «trash», и у вас всегда есть возможность вернуть их с помощью простого mv:

$ rmsafe /path /to /important /files

Источник: https://github.com/pendashteh/rmsafe

2. Используйте safe:

Вы можете установить псевдоним для rm с помощью safe:

$ alias rm = "safe rm"

Теперь, если вы запустите rm /*, вы получите это в ответ:

$ rm /*
Вы уверены, что хотите «rm /bin /boot /data /dev /etc /home /initrd.img /lib /lib64 /mnt /opt /proc /root /run /sbin /srv /sys /tmp /usr /var «? [Г /л]

и я считаю, что вы не наберете y!

Источник: https://github.com/pendashteh/safe

ответил Alexar 11 PMpWed, 11 Apr 2018 15:39:03 +030039Wednesday 2018, 15:39:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132