149 votos

El lunes por la mañana error: sudo rm-rf --no-preservar-root /

He aquí una forma entretenida de la tragedia. Esta mañana me estaba haciendo un poco de mantenimiento en mi servidor de producción, cuando me equivoco y ejecuta el siguiente comando:

sudo rm -rf --no-preserve-root /mnt/hetznerbackup /

Yo no detectar el último espacio antes de / y unos segundos más tarde, cuando las advertencias inundaba mi línea de comandos, me di cuenta de que yo acababa de llegar a la autodestrucción de botón. He aquí un poco de lo que se quema en mis ojos:

rm: cannot remove `/mnt/hetznerbackup': Is a directory
rm: cannot remove `/sys/fs/ecryptfs/version': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/inode_readahead_blks': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_max_to_scan': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/delayed_allocation_blocks': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/max_writeback_mb_bump': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_stream_req': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_min_to_scan': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_stats': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/trigger_fs_error': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/session_write_kbytes': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/lifetime_write_kbytes': Operation not permitted
# and so on..

Dejé la tarea y sentí aliviado al descubrir que el servicio de producción se sigue ejecutando. Lamentablemente, el servidor ya no acepta mi clave pública o la contraseña de cualquier usuario a través de SSH.

¿Cómo usted se mueve hacia adelante, desde aquí? Voy a nadar en un mar de alambre de púas para conseguir que SSH-acceso de nuevo.

El servidor se está ejecutando en Ubuntu 12.04 y alojada en Hetzner.

95voto

faker Puntos 11270

De arranque en el sistema de rescate proporcionada por Hetzner y comprobar lo que el daño que han hecho.
La transferencia de los archivos a una ubicación segura y volver a implementar el servidor después.

Me temo que es la mejor solución en su caso.

92voto

Amal Murali Puntos 472

Al eliminar cosas con rm -rf --no-preserve-root, su casi imposible de recuperar. Es muy probable que usted ha perdido todos los archivos importantes.

Como @farsante dijo en su respuesta, el mejor curso de acción es para transferir los archivos a una ubicación segura y volver a implementar el servidor después.

Para evitar situaciones similares en el futuro, te sugiero que:

  • Realice copias de seguridad semanales, o al menos quincenal. Esto ayudará en la obtención del servicio afectado copia de seguridad con el mínimo posible de MTTR.

  • No funcionan como root cuando no sea necesario. Y siempre pensar dos veces antes de hacer nada. Te sugiero que también se instala la caja fuerte de rm.

  • No el tipo de opciones que no desea invocar, como --no-preserve-root o --permission-to-kill-kittens-explicitly-granted, para el caso.

88voto

Kevin Wright Puntos 141

No sé si esto ayuda, pero esta historia es entretenida. En esta historia, "rm-rf /" se le permitió ejecutar accidentalmente un poco antes de ser interrumpido. El autor nos habla de algo muy creativo de la ingeniería utilizando herramientas en formas inusuales para reconstruir "/etc" y luego en "/etc/passwd", etc.

Unix Recuperación De Leyenda

33voto

Monty Harder Puntos 407

La mejor forma de solucionar un problema como este es que no sea en el primer lugar.

No introducir manualmente un "rm-rf" que tiene una barra en la lista de argumentos. (Poner estos comandos en un script de shell con muy buena validación/cordura rutinas para protegerse de hacer algo estúpido es diferente).

Simplemente no lo hacen.
Nunca. Si usted piensa que necesita para hacerlo, usted no es el pensamiento lo suficientemente duro.

De lo contrario, cambie el directorio de trabajo para el padre del directorio desde el que va a iniciar la retirada, de modo que el objetivo del comando rm no requieren de una barra:

cd /mnt

sudo rm-rf hetznerbackup

7voto

martin Puntos 49

Como se mencionó en otra respuesta, Hetzner tiene un sistema de rescate. Incluye un netboot opción con el acceso ssh, así como un applet de java para darle la pantalla y del teclado en el vserver.

Si desea recuperar tanto como sea posible, reinicie el servidor en el netboot del sistema y, a continuación, iniciar sesión y descargar una imagen del sistema de archivos mediante la lectura en el dispositivo apropiado de inodo.

Creo que algo como esto debería funcionar:

ssh root@host cat /dev/sda > server.img

Por supuesto, la redirección se hace por el shell antes de que el comando ssh se invoca, así server.img es un archivo local. Si desea que sólo el sistema de archivos root y no el disco completo, reemplace sda por sda3 asumiendo que usted está utilizando la misma imagen como a mí.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: