Eu acidentalmente fechei meu servidor inteiro

11

Tudo bem, se alguém quiser brincar de deus e fazer milagres, eu estou triste.

Então, recebi a tarefa de criar um script que encontrou arquivos com mais de 6 meses, compactou-os e depois os excluiu. No meu caminho para fazer o script eu corri isto:

find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla

E isso deu a EVERY SINGLE FILE uma extensão .gz. Agora eu desfiz isso assim que percebi, mas era meio tarde demais. Após a conclusão do comando, nenhum dos meus comandos bash funcionaria porque a variável $ PATH se esvaziou. Eu tentei muitas coisas antes de perceber qual era o problema.

Assim, descompactar tudo que ainda não consigo inicializar. Eu consegui fazer isso para resgatar grub, depois que eu segui as instruções on-line para:

root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]

Depois que meu linux inicializa parcialmente, mas me dá os seguintes erros:

Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.

Eu tentei reparar o sistema de arquivos, eu inicializei a partir de 3 discos LiveCDs / Rescue diferentes, executei o reparo de inicialização de 2 dicsc diferentes. Eu forcei fscks ...

Estou realmente sem ideias e preciso de este servidor para, pelo menos, arrancar, para poder recuperar as minhas bases de dados SQL. Estou desesperado por ajuda, vou até pagar se for necessário.

Eu estive procurando por fóruns durante 3 dias seguidos o dia todo para encontrar uma possível solução e ainda estou no mesmo ponto ... Por favor, ajude?

    
por Dexirian 15.10.2013 / 21:52

3 respostas

8

Isso dependerá de os sistemas de arquivos serem reparados o suficiente para que você possa montar essas partições de um LiveCD. Não se preocupe em tentar inicializar o sistema ainda. Primeiro, monte as partições e descompacte todos os arquivos .gz. Isto lhe dará cópias de trabalho dos binários do init e do sistema. Então você pode usar o grub para reparar o setor de inicialização. Em seguida, inicialize no modo de usuário único e execute o fsck novamente no sistema de arquivos. Se isso funcionar, você terá um sistema em execução. Você também terá vários arquivos descompactados (como man pages) que devem ser zipados, mas é melhor do que ter um sistema não inicializável.

Se você não pode montar as partições de um LiveCD, então infelizmente você está sem sorte. Nada recuperará seu sistema nesse ponto.

    
por 16.10.2013 / 02:19
9

A primeira coisa que eu tentaria é rodar um ambiente LiveCD e apenas tentar descomprimir tudo, esperando que isso retornasse o sistema para um estado inicializável. Nota: Eu ficaria preocupado com possível corrupção de dados se o processo gzip original fosse interrompido.

Caso contrário, tentarei migrar o banco de dados para um novo sistema, como já foi sugerido por outros, mas, conforme você encontrou, pode haver problemas de configuração e dependência de trabalho intensivo que precisarão ser resolvidos individualmente.

    
por 15.10.2013 / 22:11
6

O consenso geral aqui, de que você deve montar o disco em um sistema em funcionamento e resgatar seus arquivos, não está errado. É a coisa sensata a fazer. Mas o outro jeito é mais divertido e muito educativo. Eu aprendi muito enquanto lutei para sair de situações complicadas onde outras pessoas simplesmente desistiram e reinstalaram do zero. (Não em um servidor que outras pessoas estão dependendo, porém ...)

De qualquer forma, até agora você tem um initramfs (initrd) que é executado. Isso é um bom começo. Mas ele não pode completar a transferência para o init porque o init agora é init.gz talvez? Para fazer algum progresso, ajudaria saber exatamente qual distribuição Linux você tem, para que possamos procurar quais ferramentas estão disponíveis em seu initramfs para uso emergencial.

As mensagens de erro que você apresentou parecem ter vindo do initramfs do Debian. Se é Debian, então você deve ter recebido um prompt (initramfs) na próxima linha após o último erro. Se você fez, você deve olhar para o que está acontecendo com essas montagens com falha. /root/dev está faltando? ( /root é onde seu root fs normal deve ser montado durante a execução do initramfs)

Se você não recebeu o prompt do shell, o que veio depois de No init found. Try passing init= bootarg. será interessante. Mesmo que não fosse nada além de um cursor piscando, isso é uma pista. Se parecer totalmente congelado, tente obter alguma informação sobre quais processos ainda estão por aí usando o magic sysrq ou Ctrl + ScrollLock.

O Debian initramfs também permite que você solicite um shell em alguns pontos especiais adicionando um parâmetro break= à linha de comando do kernel. Por exemplo, para obter um shell antes da linha Running /scripts/init-bottom , use break=bottom .

Além de: Eu não sei como o comando find poderia ter o arquivo todo ... ele parece correto para o propósito de selecionar arquivos entre 180 e 400 dias.

    
por 16.10.2013 / 02:35

Tags