Как восстановить виртуальную машину Linux после случайного удаления всех корневых папок?

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

rm -r $my_dir/*

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

1 ответ

Вы можете попытаться восстановить файлы, используя загрузочный компакт-диск с 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" (если она существует), а затем корневой каталог (/).

Другие вопросы по тегам