У меня есть виртуальная машина CentOS Linux, работающая в VirtualBox. Я написал скрипт bash для выполнения некоторых автоматизированных задач. Но я случайно удалил все корневые папки, потому что вставил строку в скрипт

rm -r $my_dir/*

Однако $my_dir не найден, поэтому приведенное выше будет выполняться как rm -r /* . Теперь все содержимое моей корневой папки исчезло! Когда я перезагружаю свою виртуальную машину, она переходит к терминалу grub и не может запустить GNOME и оболочку bash, потому что все, что находится в / было случайно удалено из-за вышеуказанной ошибки (извлеченный урок). Так есть ли в любом случае безопасное восстановление и восстановление системы из VirtualBox или снаружи?

1 ответ1

0

Вы можете попытаться восстановить файлы, используя загрузочный компакт-диск с https://www.runtime.org/data-recovery-live-cd.htm.

Загрузите компакт-диск в Virtualbox и следуйте инструкциям на сайте.

Дополнительно:

На всех языках рекомендуется всегда выполнять проверку ввода. Это не отличается при использовании сценариев bash. Я видел серверы скомпрометированы из-за отсутствия проверки ввода.

человек тест

Это объяснит, как выполнить некоторую проверку, чтобы определить, является ли строка нулевой или пустой:

   -n STRING
          the length of STRING is nonzero

   STRING equivalent to -n STRING

   -z STRING
          the length of STRING is zero

Итак, что вы должны сделать, это:

если [ ! -z $ my_dir]; затем

   rm -r $my_dir/* 

фи

ПРИМЕЧАНИЕ. Если переменная не должным образом очищена, как в примере выше, и входные данные поступают из аргумента, можно выполнить команду и запустить другие команды:

Пример:

$ ./mybashscript.sh [каталог]

Предоставляя следующий аргумент для [directory]: test; rm -rf /

Сценарий удалит папку с именем "test" (если она существует), а затем корневой каталог (/).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .