Revertir el movimiento del directorio raíz de forma recursiva

14

Tengo un escritorio Ubuntu utilizado como servidor. Esta mañana moví accidentalmente toda mi raíz a../

 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

Estaba conectado remotamente en ssh. Ahora ya no puedo acceder. Tampoco puedo ver Webmin.

Entonces, ¿ahora no puedo reiniciar el sistema correcto? Y debo acceder físicamente a la consola del sistema y escribir este comando:

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

¿Derecha?

¿A dónde fue mi directorio raíz y cómo puedo recuperarlo? ¿Funcionará el comando anterior?

MaxDL
fuente
10
¡Guauu! ¡Ese es un error impresionante! :(
Sparhawk
3
¿Entiendo correctamente que el directorio de trabajo en ese momento era /? Si es así, cuando lo intento mv tempdir/ ../, consigo mv: ‘tempdir/’ and ‘../tempdir’ are the same file, sin nada movido.
Sparhawk
La próxima vez, no inicies sesión como root. Y si vas a mvagregar el -iinterruptor.
Braiam
1
Estoy en desacuerdo. A veces desea iniciar sesión como root en lugar de aprender a poner 'sudo' sin pensar en cada comando. Sin embargo, tenga cuidado cuando inicie sesión como root. Especialmente con los comandos eliminar y mover. --- Aún así, los errores ocurren y aprendemos de ellos. @MaxDL: ¿Puede restaurar / partion desde una copia de seguridad? ¿Tienes copias de seguridad? ¿Se puede utilizar un DRAC de Dell, una HP ILO u otra herramienta de acceso remoto para acceder a la consola del servidor sin iniciar el sistema operativo?
Hennes

Respuestas:

12

No ha movido el directorio raíz (no puede), simplemente ha movido casi todo en él al directorio padre de la ruta en la que se encontraba.

Para complicar las cosas, también te has movido mvpara que no funcione como se esperaba. Lo siguiente debería funcionar (¡siempre y cuando no haya reiniciado desde que preguntó esto!) Si todavía está en el mismo directorio que estaba cuando disparó su último mv.

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

Si no tiene ninguno de esos, simplemente omítalos del comando.

Y si no tiene acceso (no podrá hacer un nuevo inicio de sesión mientras las cosas estén en este estado) tendrá que montar el sistema de archivos externamente (a través de algo como LiveCD y montar el sistema de archivos y luego mover los archivos en el lugar correcto. La respuesta de Braiam debería ayudar con esta parte.

Oli
fuente
Lo que me confundió fue la línea root@server:/# ls, que me sugirió que era el directorio actual /. (De ahí mi segundo comentario anterior.)
Sparhawk
Lo sentimos, ese es el comando completo: root @ server: / tmp / UPS / up / upsilon # mv / * ../ Me conecté remotamente en ssh. Ahora ya no puedo acceder.
MaxDL
Entonces el comando para arreglar es/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Sparhawk
10

Si ya reinició o cerró la sesión, puede iniciar en un liveCD / USB para reparar su sistema. Voy a omitir la parte en la que sabes cómo crear un sistema Live y arrancar con Ubuntu (el cd alternativo también funciona, simplemente colócalo en un shell raíz):

Primero debes montar tu sistema en algún lugar, así que:

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

Supongo que /dev/sda1es tu raíz. Si se ha separado /bino /usrdebe montarlos también:

mount /dev/sda2 /mnt/system/usr

Ahora, debe llegar al directorio donde estaba antes de la catástrofe:

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

Ahora con el comando que dio Oli, que copiaré con descaro:

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

Ahora verifique que todo esté en orden:

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

Reinicie su sistema y sea más cauteloso en el futuro.

Braiam
fuente
1

Tuve este problema, descubrí que necesitaba llamar al comando mv de esta manera:

/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 esto ayude a otros.

Johny
fuente