Como recuperar a VM Linux depois de excluir acidentalmente todas as pastas raiz?

0

Eu tenho uma VM CentOS Linux em execução no VirtualBox. Eu escrevi um script bash para fazer algumas tarefas automatizadas. Mas eu acidentalmente apaguei todas as pastas raiz porque eu coloquei uma linha no script

rm -r $my_dir/*

No entanto, $my_dir não é encontrado, portanto, o acima será executado como rm -r /* . Então agora todo o conteúdo da minha pasta raiz sumiu! Quando eu reinicio minha VM, ele vai para o terminal grub e não pode iniciar o GNOME e o bash shell porque tudo sob / foi excluído acidentalmente devido à falha acima (lição aprendida). Então existe alguma maneira de recuperar e restaurar o sistema de forma segura no VirtualBox ou fora dele?

    
por tonga 29.06.2015 / 18:34

1 resposta

0

Você pode tentar recuperar os arquivos usando um CD inicializável no link

Inicialize o CD dentro do Virtualbox e siga as instruções no site.

Extra:

Em todos os idiomas, recomenda-se sempre realizar a validação de entrada. Isso não é diferente ao usar o script bash. Eu vi servidores serem comprometidos devido à falta de validação de entrada.

man test

Isso explicará como realizar alguma validação para determinar se uma string é nula ou vazia:

   -n STRING
          the length of STRING is nonzero

   STRING equivalent to -n STRING

   -z STRING
          the length of STRING is zero

Então, o que você deve fazer é:

if [ ! -z $my_dir ]; then

   rm -r $my_dir/* 

fi

OBSERVAÇÃO: Se a variável não for adequadamente higienizada, como no exemplo acima, e a entrada vier de um argumento, é possível sair e executar outros comandos:

Exemplo:

$ ./mybashscript.sh [diretório]

Dando o seguinte argumento para [diretório]: test; rm -rf /

O script excluirá uma pasta chamada "teste" (se existir) e depois o diretório raiz (/).

    
por 29.06.2015 / 20:02