Reverter a movimentação do diretório raiz recursivamente

14

Eu tenho um desktop Ubuntu usado como servidor. Esta manhã, acidentalmente, mudei toda a minha raiz para../

 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

Eu estava conectado remotamente no ssh. Agora, não consigo mais acessar. Também não consigo visualizar o Webmin.

Então, agora não consigo reiniciar o sistema correto? E devo acessar fisicamente o console do sistema e digite este comando:

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

certo?

Para onde foi meu diretório raiz e como posso recuperá-lo? O comando acima funcionará?

MaxDL
fonte
10
Uau! Esse é um erro impressionante! :(
Sparhawk 13/08/2013
3
Entendo corretamente que o diretório de trabalho da época era /? Nesse caso, quando tento mv tempdir/ ../, recebo mv: ‘tempdir/’ and ‘../tempdir’ are the same file, sem nada mexer.
Sparhawk 13/08/2013
Da próxima vez, não faça login como root. E se você quiser mvadicionar a -iopção.
Braiam 13/08/2013
1
Discordo. Às vezes, você deseja fazer login como root, em vez de aprender a colocar 'sudo' sem pensar em frente de todos os comandos. No entanto, tenha cuidado ao fazer login como root. Especialmente com os comandos excluir e mover. --- Ainda assim, erros acontecem e aprendemos com eles. @ Maxax: Você pode restaurar a / partion de um backup? Você tem backups? Você pode usar um Dell DRAC, um HP ILO ou outra ferramenta de acesso remoto para acessar o console dos servidores sem inicializar o sistema operacional?
Hennes

Respostas:

12

Você não moveu o diretório raiz (não pode), apenas moveu quase tudo nele para o diretório pai de qualquer caminho em que estivesse.

Para complicar as coisas, você também mudou mvpara que não funcione conforme o esperado. O seguinte deve funcionar (desde que você não tenha reinicializado desde que solicitou isso!) Se você ainda estiver no mesmo diretório em que estava quando disparou seu último MV.

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

Se você não tiver nenhum desses, apenas os omita no comando.

E se você não tiver acesso (não poderá fazer um novo login enquanto as coisas estiverem nesse estado), será necessário montar o sistema de arquivos externamente (através de algo como LiveCD e montar o sistema de arquivos e depois mover os arquivos no lugar certo.A resposta de Braiam deve ajudar nessa parte.

Oli
fonte
O que me confundiu foi a linha root@server:/# ls, que sugeriu que o diretório atual era /. (Daí o meu segundo comentário acima.)
Sparhawk
Desculpe, este é o comando completo: root @ server: / tmp / UPS / up / upsilon # mv / * ../ Eu estava conectado remotamente no ssh. Agora, não consigo mais acessar.
precisa saber é o seguinte
Em seguida, o comando para corrigir é/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Sparhawk 13/08
10

Se você já reiniciou ou se desconectou, pode inicializar em um liveCD / USB para corrigir seu sistema. Vou omitir a parte em que você sabe como criar um sistema Live e inicializar com o Ubuntu (o CD alternativo também funciona, basta soltar no shell raiz):

Primeiro você deve montar seu sistema em algum lugar, portanto:

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

Estou assumindo que /dev/sda1é a sua raiz. Se você se separou /binou /usrdeve montá-los também:

mount /dev/sda2 /mnt/system/usr

Agora, você deve chegar ao diretório em que estava antes da catástrofe:

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

Agora, com o comando que Oli deu, que copiarei descaradamente:

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

Agora verifique se está tudo em ordem:

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

Reinicie seu sistema e seja mais cauteloso no futuro.

Braiam
fonte
1

Eu tive esse problema, descobri que precisava chamar o comando mv assim:

/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} /

Espero que isso ajude os outros.

Johny
fonte