rm -rf
— это одна из команд Bash, похожая на DROP SQL-команда. Если у вас нет реплики (резервной копии) таблицы базы данных, вы потеряете все данные.
rm -rf — это команда, которая при вызове без привилегий суперпользователя удалит все папки, к которым у пользователя есть доступ. При вызове с правами суперпользователя он уничтожит ваш жесткий диск.
Мне не повезло, что я раньше совершал ошибку, запуская этот код на рабочем сервере, но не всем так везло. Вот несколько интересных rm -rf историй, которые могут показаться вам связанными.
1. Томас и программа для мусора на основе CLI
Thomas был в своей лаборатории Unix в колледже, работая над промежуточным проектом, для которого он был подключен к серверу в соседней лаборатории с помощьюPuTTY + RealVNC.
Его проект был простым: создать CLI-программу «trash», которая берет список путей к файлам и перемещает их в~/.trash
. Затем вы можете «очистить корзину», которая выполняет rm в каталоге. Он закончил первую часть и завершал пустую команду.
Каким-то образом он установил неправильную переменную, которая оставила путь удаления как /
, и у него был доступ к sudo. Ничего не произошло, когда он сначала запустил код, но вскоре после этого он стал глючить и начал отображать статические помехи. Ctrl + C не помогли. Затем монитор погас и отключился.
Его код запускал sudo rm-rf /
, что стерло все данные на сервере. К счастью для Thomas, он работал на тестовом сервере отдела и смог восстановить данные с резервных дисков. Он не потерял своего допуска.
2. Чистая очистка во время сеанса резервного копирования
Alex был сетевым администратором в компании, которая создавала резервные копии своих машин с помощью сценариев. В одну роковую пятницу он обновил сценарий текстом rm -rf ${DIRECTERY}/
вместо
rm -rf ${DIRECTORY}/ — обновление команды до
rm-rf , потому что ${КАТАЛОГ} стал пустой строкой.
Сеанс резервного копирования начался позже той же ночью, и, прежде чем Алекс успел это осознать, все машины в сети были стерты с лица земли! К счастью для него, компания создает резервные копии файлов каждый час, так что большого ущерба не было нанесено.Несмотря на это, это были насыщенные выходные. Довольно иронично, что задание резервного копирования очистит систему, верно?
3. Автоматический рекурсивный очиститель
Однажды Эрик работал на файловом сервере и хотел автоматически очищать некоторые файлы каждую неделю или около того. Он спланировал свою линию и протестировал ее с целью удаления только относительно старых файлов. Его работа находилась в одном каталоге, поэтому он не думал, что что-то может пойти не так. Что ж, позже он обнаружил, что угадал неправильно.
Он выполнил следующую команду, и она сработала. Затем он вручную добавил строку в crontab, и именно тогда он по ошибке заменил .
на / .
найти . -type f -name-ctime -60 -exec rm -rf {} \;
Перенесемся через неделю, и значительное количество файлов исчезнет. Что было еще хуже, так это то, что они были удалены, казалось бы, случайным образом, поэтому он думал, что компанию взломали, пока он не провел проверку кода и не понял, что он был хакером.
К счастью, он каждый день сохранял внешние резервные копии, поэтому смог исправить свою ошибку. С того дня вы можете поспорить, что он был очень осторожен с командами, которые он запускает с правами администратора.
Два основных пункта, которые можно взять на вооружение в приведенных выше историях: 1. Всегда дважды проверяйте свой код и его возможный результирующий эффект и 2. Всегда сохраняйте свои резервные копии как можно более актуальными, потому что вы никогда не знаете, когда они вам пригодятся.
Знаете ли вы какие-нибудь сумасшедшие rm -rf истории из опыта или где-то еще? Поделитесь ими с нами в разделе комментариев.