Как восстановить виртуальную машину 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" (если она существует), а затем корневой каталог (/).