Рубрики
Без рубрики

Новый инструмент для предотвращения катастрофических удалений, таких как Gitlab’s

Автор оригинала: FreeCodeCapm Team.

Аланом Чен

По сути: я нашел большую часть существующих инструментов, не очень полезен и сделал новый инструмент с открытым исходным кодом под названием RM-защита , который вы можете Скачать с github Отказ

Я катался на автобусе обратно в свое общежитие, и я почти уснул. Внезапно один из моих друзей послал мне сообщение о телеграмме: «GitLab удалил свою производственную базу данных, и теперь они живут потоковую базу данных восстановления базы данных на Youtube!»

Моя голова столкнулась на сиденье перед собой. Я не чувствовал боль, но ощущал извините за OPS и хотел #hugops, читая свой журнал инцидента.

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

У меня глубоко уклончивый страх потерять данные. Я начал играть с Linux в начальной школе, и в то время у меня был только ПК с одним жестким диском. Как ребенок и Linux Newbie, я был более небрежен, чем у самых утонченных пользователей. Однажды я случайно удалил целый раздел – не только системные файлы, но и мой домашний каталог.

Я до сих пор помню ужас, когда все разбилось, и я понял, что только что удалил все свои фотографии. Тогда я плакал слезы счастья, когда Photorec получил некоторые из них обратно.

Быстрый обзор текущих инструментов для предотвращения этого

Я вышел из автобуса, вернулся в мою комнату и начал поиск методов профилактики. Я слышал некоторые раньше: RM -I , Safe-RM и Trash-Cli Отказ

RM -I.

RM -I требует дополнительного подтверждения для каждый отдельный файл и каталог Отказ Утомительно подтвердить все, что вы обязательно хотите удалить. Это напоминает мне о истории Мальчик, который плакал волк Отказ

Предупреждение о все это как предупреждение о том, что нет ничего. Что хуже, некоторые пользователи разработали привычку использовать RM -RF регулярно, где -f Опция переопределит защита.

В случае инцидента Gitlab, RM -I Не помог бы: OPS знал, какой каталог он собирался удалить, но забыл о том, какую машину он был включен. Он мог бы набрать «да» и ударить «возвращение».

Безопасный-рм

Точно так же Safe-RM тоже не помогли бы. Safe-RM Имеет файл конфигурации, который содержит список путей, которые вы хотите защитить. Он поставляется с некоторыми путями по умолчанию, такими как /usr/lib Отказ Пользователи также могут создавать свои собственные списки путей. Что Safe-RM Работает ли дополнительное предупреждение заранее, что не дает дополнительной информации о том, почему она останавливает вас.

Подумайте о ситуации Gitlab: OPS мог просто ударить «Y» (он бы подумал, что это не производственная база данных, почему бы не ударить «Y»?). Плюс, Safe-RM Не предоставляет символическую связь и защиту от рекурсии.

Извините, Safe-RM Отказ (Другой инструмент называется RMFD , вилка из GNU Coreutils с аналогичным механизмом защиты)

мусор

Единственный инструмент, который я нашел полезным для ситуации Gitlab, это Trash-Cli Отказ До сих пор это лучшее решение, которое я знаю. Это приносит мусорное ведро в командную строку. Trash-Cli Конечно, может предотвратить около 90% аварийных аварий (включая Gitlab).

Но что, если вы осознаете, что-то пропали надолго после опорожнения мусора.

Или представьте, что у вас заканчивается пространство, но у вас есть тонны данных, чтобы написать на диске. Вы находитесь в спешке, чтобы освободить место (например, удаление базы данных, заполненной спамом). Вы все равно тщательно проверяете мусор?

Итак, Trash-Cli не было окончательным решением, к которому я искал.

Поиск вдохновения

Ванная всегда была отличным местом для Eureka.

Это было 11 часов вечера. Я принял душ, и я продолжал разговаривать с собой через решение для предотвращения инцидента Gitlab.

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

Я бросился из ванной.

Изобретать инструмент

Я сразу написал свои друзья о своей идее: пользователям «защищать» важные файлы и каталоги во время периода развертывания. Защита выполняется путем установления вопроса безопасности и ответа.

Представьте себе: когда Gitlab OPS развертывает базы данных на производственный сервер, они также «защищают» каталоги баз данных, создав вопрос «Какая база данных вы удаляете? (DB1/DB2)» и ответ «DB1».

После последующей попытки удалить эти каталоги, модифицированную версию RM Задам вам вопрос. Если вы не знаете ответа правильно, вы не сможете продолжить.

OPS Gitlab не смог войти в «DB1», когда он думал, что это «DB2». Убедившись, что он знал, что он делал, база данных Gitlab может быть сохранена.

Поэтому я написал сценарий Python по имени «RM-P.PY». Это обертка для RM это проверяет, если соответствующий . <имя файла> .rm-prot Определение (которое я называю «защитным файлом»). Подсказка задает вопрос, определенный в файле защиты, когда его можно найти.

Если вы получите ответ верно, rm-p.py пройдет ваш аргумент на RM Отказ Если вы этого не сделаете, это не так. Конечно, он все еще будет передавать не защищенные файлы на RM Отказ

Я позвонил этот маленький скрипт RM-защита и сделал логотип для этого.

Теперь пакет RM-защита Доступен на Pypi и исходный код на Github Отказ

Что в конечном итоге вас защищает?

Для компаний и команд резервное копирование, безусловно, является самой важной защитой для потери данных. Это не только защищает вас от толстых пальцев, но и стихийных бедствий.

Но для физических лиц всесторонние резервные копии не всегда экономичны или удобны.

Положив нехватку резервного копирования, вредные привычки почти всегда являются источником этих жирных пальцев.

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

Или так что некоторые могут сказать. Но мало кто может жить с необходимостью подтвердить каждый Одиночное удаление. Таким образом, RM -RF это их новая плохая привычка.

Текущие инструменты либо защищают вас ранее (например RM -I или Safe-RM ) или после ( Trash-Cli ) случайные делеции. Бывшие часто приносят больше неприятностей, чем ожидалось в повседневных операциях.

Последние любят Trash-Cli не обеспечивает защиту авансом. Скорее всего, вы все равно потеряете важный файл.

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

RM-защита Не беспокоит вас, когда это не нужно Таким образом, у вас все еще есть гибкость и эффективность для ежедневных операций. Когда действительно важно, чтобы вы не должны что-то удалить, он задает вам вопрос, установленный вами.

Лучшая практика

Подводя итог, вы должны сделать следующее, чтобы обеспечить безопасность ваших данных:

  1. Сделать резервные копии Отказ
  2. Проверьте резервные копии регулярно.
  3. Держите чистой головой. Не использовать RM -RF Отказ
  4. Добавить дополнительный защитный слой: выберите RM-защита , Trash-Cli или какой бы инструмент вам нравится.

И вы должны быть на 99% в безопасности.