Si aún tiene un shell raíz, puede tener la oportunidad de reparar su sistema. Digamos que ha movido todos los directorios comunes ( /bin, /etc, /lib, /sbin, /usr- estos son los que podrían hacer difícil recuperación) bajo /oops.
No podrá ejecutar el mvcomando directamente, incluso si especifica la ruta completa /oops/bin/mv. Eso es porque mvestá dinámicamente vinculado ; porque ha movido el /libdirectorio, mvno se puede ejecutar porque no puede encontrar las bibliotecas que constituyen parte de su código. De hecho, es aún peor que eso: mvno puedo encontrar el cargador dinámico /lib/ld-linux.so.2 (el nombre puede variar dependiendo de su arquitectura y variante de Unix, y el directorio podría ser un nombre diferente como /lib32o /lib64). Por lo tanto, hasta que haya movido el /libdirectorio hacia atrás, debe invocar el vinculador explícitamente y debe especificar la ruta a las bibliotecas movidas. Aquí está el comando probado en Debian squeeze i386.
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
Es posible que deba ajustar esto un poco para otras distribuciones o arquitecturas. Por ejemplo, para CentOS en x86_64:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
Cuando has arruinado algo /lib, es útil tener una caja de herramientas enlazada estáticamente. Algunas distribuciones (no sé acerca de CentOS) proporcionan una copia estáticamente vinculada de Busybox . También hay faja , un shell independiente con muchos comandos incorporados. Si tiene uno de estos, puede hacer su recuperación desde allí. Si no los ha instalado antes, es demasiado tarde.
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
Si ya no tiene un shell de raíz, pero aún tiene un demonio SSH escuchando y puede iniciar sesión directamente como root sobre ssh, y tiene una de estas cajas de herramientas vinculadas estáticamente, es posible que pueda ingresar. puede funcionar si te has mudado /liby /bin, pero no /etc.
ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /
Algunos administradores configuran una cuenta alternativa con un shell vinculado estáticamente, o hacen que la cuenta raíz use un shell vinculado estáticamente, solo para este tipo de problemas.
Si no tiene un shell raíz y no ha tomado precauciones, deberá arrancar desde un CD / USB en vivo de Linux (cualquiera funcionará siempre que sea lo suficientemente reciente como para poder acceder a sus discos y sistemas de archivos) y mover los archivos de vuelta.