Accidentalmente hizo dd / dev / sda

35

Escribí una imagen ISO en mi disco duro usando sudo dd if=image.iso of=/dev/sda. Quise decir /dev/sdc, y ahora en ejecución sudo fdisk -lsolo devuelve una partición en / dev / sda mientras se supone que debe haber 6. ¿Es posible recuperar mis datos?

Todavía no apagué (reinicié) mi computadora.

Vaca Baaing
fuente
24
ddha vuelto a mostrar su fea cara de "Destructor de datos" :-( Se ha sobrescrito el extremo de la unidad (correspondiente al tamaño del archivo iso). Los datos que estaban allí se han perdido. ¿Ha recibido una copia de seguridad bastante reciente del archivos que no puede permitirse perder; de lo contrario, debe prepararse para trabajar duro para reparar la tabla de particiones y los sistemas de archivos, mejor en una copia clonada usando Testdisk , y si eso falla, aún más trabajo para recuperar los datos de archivos que se encuentran 'detrás' la parte del disco que se sobrescribe. Puede usar PhotoRec para ese propósito. Vea este enlace, cgsecurity.org
sudodus
66
La unidad gpt está particionada, tiene la ventaja de una tabla de partición de respaldo al final de la unidad. Solo el comienzo de la unidad al tamaño de ISO se sobrescribió totalmente y se perdió. Dependiendo del tamaño de las particiones, puede recuperar algunas o la mayoría de las otras particiones.
oldfred
10
@sudodus " ddha vuelto a mostrar su fea cara de 'Destructor de datos'" . Excepto que no tiene nada que ver dd, tiene que ver con acceder directamente a un dispositivo de disco como root. Cualquier otra herramienta podría haber tenido el mismo efecto. cat image.iso > /dev/sdahabría tenido exactamente el mismo efecto. O pv .... O, hasta cierto punto, incluso vi /dev/sda. De hecho, esto me recuerda la historia en la que Linus Torvalds intentó marcar en una red utilizando su dispositivo de disco duro en lugar del módem, sobrescribiendo el inicio de su unidad con el apretón de manos de marcación . Nada que ver con dd.
marcelm
44
¿Qué tamaño tiene exactamente su .isoarchivo? ¿Interrumpió ddo se ejecutó hasta su finalización?
marcelm
44
@marcelm, tienes razón. Pero en la vida real, las personas usan ddesto (para este propósito), así que creo que la advertencia 'Destructor de datos' es relevante, aunque la advertencia completamente correcta debería ser más larga: "No use una línea de comando como sudo dd if=image.iso of=/dev/sdxpara clonar a una masa dispositivo de almacenamiento: utilice una herramienta que lo ayude a identificar y seleccionar el dispositivo de destino correcto y que tenga un punto de control final, de modo que pueda verificar que clonará desde el archivo iso al dispositivo de destino correcto, por ejemplo, StartupDiskCreator, Disks, mkusb , Win32DiskImager ".
sudodus

Respuestas:

65

Como su computadora aún está encendida, tiene una buena posibilidad de guardar cosas.

Primero, sysfsexpone los núcleos en la vista de memoria de las tablas de particiones. En este momento, su núcleo no ha releído la tabla del disco y recuerda su partición. En el interior /sys/block/sda/, debe haber un directorio para cada partición. Cada subdirectorio contiene un archivo starty un archivo size, que representan la ubicación y el tamaño de la partición, en sectores. Ejecute fdisky luego vuelva a crear cada partición (¡en orden!) Con la información en su sysfsdirectorio. Tenga en cuenta que también deberá crear una nueva tabla de particiones. Asegúrese de que su nueva tabla de particiones sea la misma que la anterior. Puedes consultar esto /sys/block/sda. Si ves sda1hastasda7Si bien solo tiene 6 particiones, es probable que tenga MBR, y de lo contrario, probablemente fue GPT. También necesita establecer banderas y tipos para estas particiones. Mire /etc/fstabe intente obtener información sobre los tipos de particiones que tiene, luego consulte Wikipedia para convertirlos en códigos para su esquema de particionamiento.

Como parece que puede usar su sistema de archivos, es probable que ddno haya podido sobrescribir ninguno de ellos, ya que la mayoría de los bits importantes de un sistema de archivos están en la parte delantera. Verifique /etc/fstabqué particiones corresponden a qué parte de su sistema, y ​​luego use la cantidad de datos ddcopiados para obtener una estimación de la cantidad de armas nucleares. Si sobrescribió solo una parte de un sistema de archivos, un buen usuario fsck podría corregirlo un poco (pero ha perdido una buena cantidad de datos).

Lo más probable es que haya sobrescrito /boot. Tendrá que reinstalar su kernel (con aptitude) y reinstalar GRUB2 (con grub-install) (que destruyó su primera y segunda etapa). GRUB2 está configurado con archivos /etc, por lo que no tendrá que volver a crear nada manualmente.

HTNW
fuente
15
"Verifique /sys/block/sda/*/{start,end}y vuelva a crear sus particiones con esta información": ¿podría ampliar esto un poco? No es una operación trivial y parece ser el punto principal de su excelente respuesta.
terdon
De salida que es más fácil de descifrar, escribir estos en la cáscara símbolo con un retorno después de cada ...............: sudo parted, unit s, print all,quit
Hannu
3
Copie cualquier información valiosa en otra unidad (por ejemplo, una memoria USB) a medida que la descubra. En caso de que alguno de los pasos de recreación de partición no vaya a la perfección, desea tener un registro de lo que estaba en la memoria de la computadora que aún funciona. Además, copie sus archivos más valiosos y / o pequeños (incluidos cosas como .bashrcy otros archivos de puntos de su directorio de inicio, y todos /etc, además de sus datos reales) a otro disco mientras su computadora en funcionamiento todavía funciona . tar.gz es un buen formato para copiar directorios completos (porque conserva los permisos y demás).
Peter Cordes
Lo hará también es probable que volver a formatear lo que era / arranque, que es una especie de peligroso cuando hay incertidumbre en lo que piensa el núcleo de la distribución de la partición ...
rackandboneman
1
@rackandboneman El kernel se niega a releer las tablas de particiones en un disco con particiones montadas. Reformatear /bootasí es perfectamente "seguro" (módulo literalmente todo lo demás sobre esta situación ) porque el núcleo no tiene dudas sobre nada.
HTNW
21

Lamento leer sobre tu mala suerte

Supongo que no tienes una copia de seguridad actual, y lamento leer sobre tu mala suerte usando

sudo dd if=image.iso of=/dev/sdx

donde usó la letra de la unidad x= apara sobrescribir el comienzo de su unidad de disco duro donde almacenó una gran cantidad de datos valiosos

No eres la primera persona y me temo que no es la última persona afectada por este problema. ddse recomienda en muchos sitios web para usarse de esta manera. Es un método poderoso pero peligroso, porque hace lo que le dices que haga sin preguntas. Por esta razón, a menudo se lo conoce como "Destructor de datos".

@marcelm comenta que este apodo es injusto. Tiene razón en que escribir directamente en un archivo de dispositivo como root está causando el riesgo . Por lo tanto, tenga en cuenta que puede sobrescribir fácilmente una unidad y destruir datos valiosos escribiendo en el archivo del dispositivo correspondiente /dev/sdx. (Las herramientas más seguras se enumeran al final de esta respuesta).

Recupere la tabla de particiones, los sistemas de archivos y / o el contenido del archivo

  • Haga lo menos posible con la unidad y, sobre todo, no le escriba nada, ya que puede empeorar la situación al sobrescribir los datos, que aún es posible recuperar.

  • Si sus datos son valiosos, debe trabajar en una copia clonada , no en la unidad original (parcialmente sobrescrita). Consulte este enlace, desplácese hacia abajo hasta 'Reparación avanzada de una tabla de particiones, sistema de archivos y / o recuperación de archivos'

    Repare la tabla de particiones y el sistema de archivos de un pendrive

  • Si tenía una tabla de particiones GUID, GPT, hay una copia de seguridad de la tabla de particiones al final de la unidad /dev/sda, y es posible que pueda restaurar la tabla de particiones principal desde esta tabla de respaldo utilizando la herramienta gdisk. Consulte el manual man gdiskpara más detalles.

  • Puede lograr restaurar la tabla de particiones y los sistemas de archivos usando Testdisk desde

    http://cgsecurity.org

    Lea las instrucciones en el sitio web de CGSecurity y también el enlace proporcionado por @ElderGeek. Las particiones desaparecieron después de una pérdida de energía durante la instalación.

  • También puede restaurar la tabla de particiones y los sistemas de archivos usando gpart / gparted de acuerdo con el enlace proporcionado por @CSM,

    Cómo: Restaurar particiones perdidas en una tabla de particiones corrupta o eliminada

  • PhotoRec : si no puede recuperar la tabla de particiones y los sistemas de archivos, aún puede recuperar algunos datos de archivo. Los archivos en la cabecera, quizás 1-1.5 GB, se sobrescriben y se pierden, pero los archivos detrás de esa parte de la unidad todavía están allí. PhotoRec de http://cgsecurity.org es una herramienta que puede recuperar datos 'desde la superficie del disco' sin un sistema de archivos. Los datos típicos al comienzo de los tipos de archivos comunes se utilizan para la identificación.

    El siguiente enlace proporciona detalles sobre PhotoRec,

    https://www.cgsecurity.org/wiki/PhotoRec

    Debe guardar los archivos en una partición en una unidad separada.

    No es posible recuperar la estructura del directorio y generalmente no es posible recuperar los nombres de los archivos (y no los permisos y la propiedad), y existen problemas cuando los archivos están fragmentados, pero PhotoRec puede recuperar muchos archivos (no solo fotos, también muchos otros tipos de archivos comunes). Pero, y esto es un gran pero, es mucho trabajo arduo recorrer la gran cantidad de archivos sin clasificar para identificar los archivos realmente importantes, que debe cambiar el nombre a nombres de archivo significativos.

Herramientas más seguras para crear unidades de arranque USB con Ubuntu

En el futuro, utilice una herramienta que lo ayude a identificar y seleccionar el dispositivo de destino correcto y que tenga un punto de control final, de modo que pueda verificar que clonará desde el archivo iso al dispositivo de destino correcto, por ejemplo

  • En Ubuntu: Ubuntu Startup Disk Creator (en Ubuntu 16.04 LTS y versiones más recientes),
  • En Linux:

    • Alias ​​de discosgnome-disks ,
    • MKUSB ,
  • En Windows: Win32DiskImager .

También puede usar herramientas de extracción , que proporcionan un punto de control final, por ejemplo

sudodus
fuente
1
Puedo responder por Testdisk de cgsecurity, funciona mucho mejor que otras alternativas que he probado en el pasado, donde Testdisk fue el único que logró salvar algo útil. ¡pero ten cuidado, el pequeño hijo de puta por defecto intenta recuperar tu partición en el disco! xx
hanshenrik
1
+1. También puedo responder testdisk. También es una buena idea un script de contenedor para evitar ddescribir en su / sda / sdb / lo que sea.
WinEunuuchs2Unix
19

Por su ddcomando, sobrescribió la tabla de particiones de / dev / sda y todos los datos hasta el tamaño de image.iso.

Entonces, lo mejor que puede lograr es restaurar su tabla de particiones (con tamaños exactos) para recuperar al menos las particiones hacia el final de / dev / sda.

muclux
fuente
1
Si desea saber cómo obtener los tamaños exactos, consulte el segundo párrafo de esta respuesta .
wizzwizz4
16

Si no se restaura desde una copia de seguridad, no hay forma de recuperarse completamente. DD ha sobrescrito la tabla de particiones y algunos de los datos del dispositivo.

abejorro
fuente
19
Supongo que debería descartar todas mis copias de seguridad de recuperación ante desastres entonces.
stumblebee
23
@Baaing Cow, por supuesto, es una respuesta y, por supuesto, no puede haber forma de recuperar datos. Eso es lo que significa cuando sobrescribe datos: se han ido.
psusi
22
@ ChaiT.Rex Eso parece ser un mito, al menos en cualquier equipo que pueda encontrar en una PC fabricada en la última década.
David Schwartz
19
@ ChaiT.Rex Eso solo se aplica a los discos que no están completamente sobrescritos donde solo se borra una parte del disco. Sin embargo, si se ha borrado o sobrescrito todo el disco, no hay recuperación de datos. Especialistas o no.
Thomas Ward
8
@BaaingCow Como sabes que debe haber una manera de restaurar los datos, por favor, ilumínanos. ¡Muchas personas estarán dispuestas a pagar dinero por su técnica!
Tim
9

Si su unidad está particionada en particiones separadas /y /home, y la /homepartición estaba después de la /partición, entonces puede recuperar sus datos. El MBR que enumera dónde están la mayoría de las particiones se ha sobrescrito. Sin embargo, gparted puede recuperar su /homepartición.

Esta publicación en los foros de Ubuntu da algunas ideas sobre cómo hacerlo; Encontré eso buscando "partición de recuperación de gparted".

Una vez que haya encontrado su partición perdida (podría estar dentro de una partición extendida), debe agregarla como la única partición en la tabla de particiones.

Una vez que hayas hecho eso, tendrás que reinstalar Linux, diciéndole que mantenga la partición recuperada como /home.

CSM
fuente
2

Testdisk al rescate

Puedo responder personalmente por Testdisk, que guardó mis datos después de copiar y pegar repetidamente las instrucciones /dev/sdby cambiarlo a /dev/sddmi USB. Solo una vez olvidé cambiarlo y allí me metí /dev/sdben el basurero.

Configure su sistema para que nunca escriba /dev/sda

Recomiendo encarecidamente crear un script de envoltura: evite que 'dd` destruya SSD o HDD . Esto garantiza que ddnunca escriba /dev/sdani posiblemente /dev/sdbni en ningún otro de sus dispositivos de almacenamiento masivo.

WinEunuuchs2Unix
fuente