Ripristina ricorsivamente lo spostamento della directory principale


14

Ho un desktop Ubuntu usato come server. Questa mattina ho accidentalmente spostato tutte le mie radici in../

 root@server:/tmp/UPS/up/upsilon# mv /* ../
 mv: impossibile spostare "/dev" in "../dev": Dispositivo o risorsa occupata
 mv: impossibile spostare "/proc" in "../proc": Dispositivo o risorsa occupata
 mv: impossibile spostare "/run" in "../run": Dispositivo o risorsa occupata
 mv: impossibile spostare "/sys" in "../sys": Dispositivo o risorsa occupata
 mv: impossibile spostare "/tmp" in una sottodirectory di sé stessa, "../tmp"
 root@server:/tmp/UPS/up/upsilon# ls
 -bash: /bin/ls: No such file or directory

Sono stato collegato in remoto in SSH. Ora non riesco più ad accedere. Non riesco anche a visualizzare Webmin.

Quindi, ora non riesco a riavviare il sistema corretto? E devo accedere fisicamente alla console di sistema e digitare questo comando:

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*}

giusto?

Dove è finita la mia directory principale e come posso recuperarla? Il comando sopra funzionerà?


10
Wow! Questo è un errore impressionante! :(
Sparhawk,

3
Capisco correttamente che la directory di lavoro in quel momento era /? In tal caso, quando provo mv tempdir/ ../, ottengo mv: ‘tempdir/’ and ‘../tempdir’ are the same file, senza che nulla si muova.
Sparhawk,

La prossima volta, non accedere come root. E se hai intenzione di mvaggiungere l' -iopzione.
Braiam,

1
Non sono d'accordo. A volte si desidera accedere come root piuttosto che imparare a mettere "sudo" davanti a ogni comando. Tuttavia, fai attenzione quando accedi come root. Soprattutto con i comandi di eliminazione e spostamento. --- Tuttavia, si verificano errori e impariamo da quelli. @MaxDL: puoi ripristinare la / partion da un backup? Hai dei backup? È possibile utilizzare un Dell DRAC, un HP ILO o altri strumenti di accesso remoto per accedere alla console dei server senza avviare il sistema operativo?
Hennes,

Risposte:


12

Non hai spostato la directory principale (non puoi), hai appena spostato quasi tutto in essa nella directory principale di qualunque percorso ti trovassi.

Per complicare le cose, ti sei anche spostato in mvmodo che non funzionasse come previsto. Quanto segue dovrebbe funzionare (purché non ti sia riavviato da quando lo hai chiesto!) Se sei ancora nella stessa directory che eri quando hai sparato il tuo ultimo mv.

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /

Se non ne possiedi nessuno, omettili dal comando.

E se non hai accesso (non sarai in grado di fare un nuovo login mentre le cose sono in questo stato) dovrai montare il filesystem esternamente (attraverso qualcosa come LiveCD e montare il filesystem e quindi spostare i file nel posto giusto. La risposta di Braiam dovrebbe aiutare in questa parte.


Ciò che mi ha confuso era la linea root@server:/# ls, che mi ha suggerito che la directory corrente era /. (Da qui il mio secondo commento sopra.)
Sparhawk,

Siamo spiacenti, questo è il comando completo: root @ server: / tmp / UPS / up / upsilon # mv / * ../ Sono stato collegato in remoto in ssh. Ora non riesco più ad accedere.
MaxDL

Quindi il comando da correggere è/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Sparhawk il

10

Se hai già riavviato o ti sei disconnesso, puoi avviare un LiveCD / USB per riparare il tuo sistema. Ometterò la parte in cui sai come creare un sistema Live e avviare con Ubuntu (funziona anche il cd alternativo, basta cadere in una shell di root):

Per prima cosa dovresti montare il tuo sistema da qualche parte, quindi:

mkdir /mnt/system
mount /dev/sda1 /mnt/system

Suppongo /dev/sda1sia la tua radice. Se li hai separati /bino /usrdovresti montarli anche tu:

mount /dev/sda2 /mnt/system/usr

Ora, dovresti arrivare alla directory in cui ti trovavi prima della catastrofe:

cd /mnt/system/tmp/UPS/up/upsilon

Ora con il comando che Oli ha dato, che copierò con palese:

mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /mnt/system/

Ora verifica che tutto sia in ordine:

# ls /mnt/system/
bin boot etc home media mnt opt root sbin selinux usr var etc...

Riavvia il sistema e sii più cauto in futuro.


1

Ho avuto questo problema, ho scoperto che avevo bisogno di chiamare il comando mv in questo modo:

/tmp/UPS/up/lib/ld-linux-x86-64.so.2 --library-path /tmp/UPS/up/lib/ /tmp/UPS/up/test/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var} /

Spero che questo aiuti gli altri.

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.