Sudo rm / * eseguito accidentalmente su un server remoto


11

Ho eseguito per errore rm /*mentre eseguivo l'accesso come root in un server Ubuntu remoto e cancellavo praticamente tutti i file binari e attualmente non riesco ad accedere tramite ssh o ftp per ripristinare i file (e spero per il meglio).

C'è un modo per risolvere in qualche modo questo pasticcio o dovrei chiamare il datacenter e chiedere un formato?


2
Puoi confermare se si tratta di un server fisico o virtuale? Anche se hai eseguito l' -rargomento rmo hai appena eseguito il comando che mostri. Il tuo provider di hosting fornisce un modo per accedere alle immagini del disco al di fuori di quel particolare computer?
Caleb,

Risposte:


26

rm /*dovrebbe eliminare molto poco. Non ci sono -rflag che eliminino in modo ricorsivo nulla e senza di essa le directory non verranno eliminate (e anche se le directory fossero eliminate, solo quelle vuote potranno essere eliminate). Questa risposta si basa sul presupposto che non hai eseguito rm -rf /*.

Gli unici file di conseguenza nel filesystem di root possono essere i symlink al kernel e initrd (anche se su un sistema Ubuntu che sto guardando, non esistono) o un /lib64symlink su sistemi a 64 bit.

Il problema potrebbe essere che il /lib64 -> /libcollegamento simbolico è stato eliminato. È piuttosto brutto, dato che quasi tutti i programmi si basano su quel link simbolico:

$ ldd /bin/bash
...
    /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)

Questo ld-linuxè il caricatore dinamico e, se non è disponibile, non è possibile eseguire alcun eseguibile dinamico. Ciò renderà estremamente difficile il login e potresti non riuscire affatto.

Un salvatore può essere busybox. Esegui questo per controllare:

$ ldd /bin/busybox
    not a dynamic executable

In questo caso, busybox dovrebbe essere eseguibile, ma la domanda è come è possibile eseguirlo?

Se hai accesso al prompt del caricatore di avvio, potresti essere in grado di eseguire l'avvio init=/bin/static-sh, dove static-sh è un collegamento simbolico a busybox(controlla che /bin/static-shesista - lo fa sul mio sistema, ma non è Ubuntu standard. Questo errore suggerisce che è disponibile .)

Una volta che hai una shell di root, puoi ricreare il /lib64link simbolico. Potrebbe essere necessario prima reinstallare il filesystem di root come lettura / scrittura. busybox dovrebbe avere questi strumenti integrati, che puoi eseguire come segue:

# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash# 

Se bash funziona, il problema dovrebbe essere risolto.


18

Se devi ripristinare i file dall'installazione corrente, chiedi al tuo host di aiutarti. Supponendo che si tratti di una macchina virtuale, sono necessari circa cinque minuti della giornata per visualizzare l'immagine del disco, reinstallare l'host da zero e scaricare l'immagine del disco precedente nel nuovo file system.

Se non ti serve nulla, procedi semplicemente alla reinstallazione. Quasi sempre l'opzione più veloce quando si ossessionano le cose difficili.


2
Concur. Se sono un servizio di hosting VM ragionevolmente competente, dovrebbero essere in grado di farlo. Contattali il più rapidamente possibile per assicurarti che abbiano ancora un backup pre-avvitamento.
Shadur,

2

Se hai appena eliminato il link simbolico / lib64 in / lib e hai ancora la console aperta, fai semplicemente:

/lib/ld-linux-x86-64.so.2 /bin/ln -s /lib /lib64

e dovresti essere in grado di eseguire nuovamente i comandi normalmente. Regola il percorso della tua attuale libreria ld. Puoi anche eseguire qualsiasi altro comando che desideri semplicemente anteponendolo al percorso completo della libreria ld.


1

Senza avere accesso al server fisico non c'è molto che puoi fare.


Quindi, dovrei chiedere un formato, o c'è un modo per ripristinare quei file senza montare tutto il resto?
Formica

Dimentichi che esiste un'alta probabilità che si tratti di un server virtuale, nel qual caso "server fisico" non significa molto se non avere accesso a strumenti remoti di livello superiore.
Caleb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.