Recupere archivos de una máquina Virtualbox rota .vdi

23

Mi Ubuntu 12.04.1 ejecutándose en virtualbox se quedó sin espacio mientras estaba instalando software y ahora no se reinicia . Tengo archivos que necesito recuperar de él. Tengo el ubuntu64.vdiarchivo en mi computadora portátil con Windows 7 (host) y me preguntaba si hay alguna forma de recuperar los archivos del archivo vdi.

Paralelamente, generé una nueva máquina 12.04.1 en virtualbox en la misma computadora portátil, y la usaré en lugar de la borked.

Puedo agregar el borked vdia la lista de discos en el que funciona. Luego usé gnome nautilus para montar el disco descorchado.

Puedo encontrar los archivos allí, pero tienen aproximadamente 2 meses. Creo que esto coincide con la última vez que hice una instantánea de virtualbox de la máquina, pero no la última vez que obtuve una máquina en funcionamiento, que fue ayer. ¿Hay alguna forma de montar el vdide ayer, justo antes de que se estrellara?

EDITADO:

Esto es lo que Virtual Media Managerme dice acerca de mi ubuntu64.vdiarchivo: ingrese la descripción de la imagen aquí

EDITADO2:

Copié mi ubuntu.vdia un USB externo con mucho espacio en disco. Intenté usar Windows para clonarlo, pero recibí un error:

ingrese la descripción de la imagen aquí

Intenté lo mismo desde la máquina virtual en funcionamiento a través de una carpeta compartida de la unidad USB, y comenzó la clonación. Tomó un buen rato, pero terminó con éxito:

root@precise64:/media/sf_E_DRIVE/copy_of_ubuntu64_vm_folder_20140224/ubuntu64# 
VBoxManage clonehd ubuntu64.vdi ubuntu64.raw --format RAW
0%...

10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'RAW'. UUID: 90f99198-18e1-40ee-85fe-c083dcbb1ac3

EDITADO3:

Después de crear el archivo sin procesar, ejecuto testdiskcon Deeper Search, obtengo una lista como esta: ingrese la descripción de la imagen aquí

Ater Deeper Searchha terminado, me sale una lista como esta:

ingrese la descripción de la imagen aquí

Pero no sé cuál es cada instantánea ... ¿Alguna idea?

719016
fuente
@ Takkat, eso suena genial. ¿Cómo puedo hacer eso?
719016
@Takkat, lo hice y lo monté usando gnome nautilus, pero creo que montó una versión de la máquina con dos meses de antigüedad.
719016
2
El problema aquí no es cómo recuperar el disco sino cómo fusionarlo con la instantánea. Si intenta clonar su vdi, tendría otro uuid y la instantánea no funcionará con él y perderá los últimos datos. No uso instantáneas de forma regular porque he tenido discos dañados en el pasado y pude recuperar el disco base pero siempre perdí los deltas. Espero que alguien aquí dé una buena receta para recuperar tanto la base como el delta.
Pablo Marin-Garcia
1
Esto es para la próxima vez: nunca almacene datos en una máquina virtual, monte siempre una unidad externa ... o realice copias de seguridad / sincronización frecuentes a través de rsync.
Dee
1
Intente clonar la instantánea más reciente, no el disco original. Debe usar Vboxmanage clonehd 2208...(copie el UUID más reciente aquí). Ver serverfault.com/a/506581/195528
Rmano

Respuestas:

21

De la línea de comando

En caso de que usemos Ubuntu como host, podemos convertir nuestro disco .vdi a un disco sin formato con el siguiente comando:

VBoxManage clonehd <sourcename> <clone.raw> --format RAW

Luego podemos abrir testdisk Instalar testdisk con este archivo para recuperar archivos en la imagen de la unidad virtual (también vea a continuación):

testdisk <clone.raw>

De una máquina virtual

En caso de que la imagen rota de la unidad VDI todavía esté registrada en Virtual Box, podemos agregar esta imagen como una unidad a nuestra nueva máquina virtual:

ingrese la descripción de la imagen aquí

Inicie su Ubuntu virtual al que hemos agregado el .vdi roto pero no monte la unidad .

  1. Cree un directorio en una partición montada allí para contener los datos recolectados (por ejemplo ~/rescued),

  2. Instale testdisk Instalar testdisk en la máquina virtual.

  3. Inicie testdisk desde una terminal allí:

    sudo testdisk
    
  4. Elija la unidad adecuada para recolectar datos (aquí se muestra para /sdb) y seleccione[Proceed]

    ingrese la descripción de la imagen aquí

  5. Elija el diseño de partición apropiado (generalmente Intel)

  6. Seleccione [Analyse]-[Quick Search]

  7. Seleccione la partición que contiene los datos para cosechar (aquí solo estaba presente una única partición NTFS):

    ingrese la descripción de la imagen aquí

  8. Presione P para listar archivos en esa partición.

  9. Navegue hasta el directorio que contiene los datos. Vea los nombres de los archivos para asegurarse de haber elegido los correctos.

  10. Seleccione directorios o archivos para cosechar usando : . Todos los archivos / directorios seleccionados se marcarán en verde:

    ingrese la descripción de la imagen aquí

  11. Presione mayúscula C para copiar todos los directorios / archivos seleccionados al directorio de rescate que se seleccionará en el siguiente paso.

  12. Elija un directorio en la (s) partición (s) montada (s) de su VM de Ubuntu para guardar los datos rescatados:

    ingrese la descripción de la imagen aquí

  13. Presione c para comenzar a copiar los datos del .vdi roto a nuestro directorio de rescate en su VM saludable.

Notas:

  • En caso de que no podamos ver nuestros archivos con la [Quick Search]opción en 6. es posible que tengamos que realizar a [Deeper Search]. Esto también mostrará una lista de particiones eliminadas y sobrescritas anteriores. Por lo tanto, debemos asegurarnos de seleccionar las particiones apropiadas donde residen nuestros datos.

  • Si hubiéramos tomado instantáneas de .vdi, podemos encontrarlas en, ~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdkpero cada vez que usamos la función de instantánea de Virtual Box, cualquier cambio de una instantánea se escribirá en un archivo diferencial.

    Para fusionar el archivo diferencial con el disco duro, necesitamos eliminar todas las instantáneas (que probablemente no sea lo que queremos, ya que podríamos restaurar a la instantánea anterior en lugar de solicitar la recuperación de datos), o necesitamos clonar el disco de la máquina usando:

    VBoxManage clonehd <name_of_source> <clone>
    

    Luego vinculamos el clon a nuestra VM de rescate como se muestra arriba.

  • Escribir en el .vdi roto solo debe hacerse después de que los datos estén seguros, ya que esto puede dañar aún más el sistema de archivos.

  • En caso de que nuestro Ubuntu de rescate sea demasiado pequeño para contener los datos rescatados, podemos crear otra unidad virtual nueva para vincularla a la VM. Esta unidad debe montarse en la máquina virtual para poder guardar allí los datos del disco de prueba.

Takkat
fuente
gracias por estas instrucciones brillantemente detalladas. Los seguí correctamente y agregué los archivos para copiar a mi carpeta rescatada. La copia fue exitosa pero la marca de tiempo de los archivos era bastante antigua: el verano de 2013 en lugar de hace dos días. No recuerdo si hice algo en particular hace 8 meses, pero a primera vista, mis archivos de hace dos días no estaban allí. Ahora estoy usando Deeper Searchpara navegar de nuevo.
719016
@ 213441265152351 - también eche un vistazo a la carpeta de instantáneas ... puede haber un .vmdk más nuevo (al menos fue con mis sistemas aquí). Espero que encuentres tus datos :)
Takkat
Hice un Deeper Search, y después de un par de horas, volví a buscar el contenido que quería recuperar: todavía apuntan a una versión de verano de 2013 de la máquina virtual, antes de simplemente montar la partición con gnome nautilus, que me estaba dando un enero Versión 2014, pero aún no puedo encontrar los archivos de hace dos días.
719016
1
@ 213441265152351: bueno, eso es más complicado entonces. Es posible que las imágenes de diferenciación aún no se hayan escrito correctamente en la unidad cuando se produjo el "bloqueo". Puede intentar echar un vistazo al disco desde Virtual Media Manager (consulte virtualbox.org/manual/ch05.html#diffimages ) para ver si ese fue el caso, pero debo decir que no tendré un buen idea sobre cómo recuperar datos de estas imágenes.
Takkat
2
@Rmano: en realidad, un VDI clonado no incluirá ninguna instantánea, pero será el último estado presente de la VM con diferenciales combinados. Solo en caso de que necesitemos clonar una instantánea anterior, podemos usar un VDI de instantánea para clonar, pero luego todos los cambios posteriores a la instantánea no se incluirán en el clon.
Takkat
5

1) Intenta recuperar la instantánea con el UUID, usa el siguiente truco:

  • elija UUID del estado que desea recuperar.
  • Abra el archivo .xml, preferiblemente en una herramienta (Internet Explorer funciona) que permite una fácil navegación del archivo XML.
  • En la parte INFERIOR, en la sección Controladores de almacenamiento, busque el UUID del estado actual y anote la configuración de StorageController name =, type = y AttachedDevice type =, port = and device =.
  • En el medio, encuentre la instantánea que desea.
  • En la sección Controlador de almacenamiento de la instantánea, busque el AttachedDevice con los valores (nombre / tipo / tipo / puerto / dispositivo) que coincidan con los valores recuperados anteriormente.
  • Esa imagen UUID identifica la imagen de instantánea para el disco duro. Retire los {} corchetes y

ingrese el comando C:> VBoxManage clonehd <UUID> CloneDisk.vdi

Espero que ayude, encontré la solución aquí: ( https://forums.virtualbox.org/viewtopic.php?t=791 )

2) si los pasos en 1) no funcionan, aquí hay otros pasos que puede probar. Cómo clonarhd el estado actual de un disco:

  • Abra el Virtual Media Manager (Menú: Archivo> Virtual Media Manager).
  • Navegue hasta el disco duro que desea clonar y expanda completamente el árbol (use la tecla * en el teclado numérico).
  • Busque el archivo {hexUUID} .vdi que está adjunto a la máquina virtual en la que desea clonar el estado actual. Será (uno de) los archivos de hoja al final de una rama. Cuando lo seleccione, el texto 'Adjunto a:' en la parte inferior de la ventana dirá: 'Adjunto a:', sin ningún (nombre de instantánea) entre paréntesis después de él.
  • Haga clic en el nombre del archivo a la derecha de 'Ubicación:' que se muestra en la parte inferior de la ventana.
  • Ctrl + C / Copiar para copiar el texto en el portapapeles, que será algo así como: (ruta) {b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdi
  • Ctrl + V / Pegar y extraer el valor hexUUID (eliminando los {} corchetes) y ejecutar clonehd para clonarlo.

Esta solución es de aquí: ( http://www.im-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ ) Ambos hablan sobre todo de lo mismo.

Dee
fuente
1

Tenía un sistema Linux dañado /y fsckno podía solucionarlo . Usé el siguiente enfoque simple:

  1. Agregue un nuevo VDI de reemplazo a la máquina.
  2. Descargue una nueva ISO de Linux.
  3. Arranque e instale un nuevo Linux en el disco que agregó en (1).
  4. Monte el disco en su nuevo sistema y copie los archivos que necesita. Por lo general, esto significa copiar la /home/user/carpeta. Recuerde copiar los archivos ocultos (archivos de configuración).

Funcionó bien para mí. La corrupción del disco solo dificultaba el arranque, no hubo pérdida de datos en mi carpeta de inicio.

Deleet
fuente