Récupérer des fichiers à partir d'une machine Virtualbox cassée .vdi

23

Mon Ubuntu 12.04.1 fonctionnant sur virtualbox a manqué d'espace pendant que j'installais un logiciel dessus et maintenant il ne redémarre pas . J'ai des fichiers dont j'ai besoin pour en récupérer. J'ai le ubuntu64.vdifichier sur mon ordinateur portable Windows 7 (hôte) et je me demandais s'il y avait un moyen de récupérer les fichiers à partir du fichier vdi.

En parallèle, j'ai généré une nouvelle machine 12.04.1 sur virtualbox dans le même ordinateur portable, et je vais utiliser celle-ci à la place de celle borked.

Je peux ajouter le borked vdià la liste des disques dans celui qui fonctionne. Ensuite, j'ai utilisé gnome nautilus pour monter le disque borked.

Je peux y trouver les fichiers, mais ils ont environ 2 mois. Je pense que cela coïncide avec la dernière fois que j'ai fait un instantané de virtualbox de la machine, mais pas la dernière fois que j'ai eu une machine qui fonctionnait, c'était hier. Existe-t-il un moyen de monter le à vdipartir d'hier, juste avant qu'il ne s'écrase?

ÉDITÉ:

Voici ce qui Virtual Media Managerme dit sur mon ubuntu64.vdidossier: entrez la description de l'image ici

EDITÉ2:

Je l'ai copié ubuntu.vdisur un périphérique USB externe avec beaucoup d'espace disque. J'ai essayé d'utiliser Windows pour le cloner, mais j'ai eu une erreur:

entrez la description de l'image ici

J'ai essayé la même chose à partir de la machine virtuelle de travail via un dossier partagé de la clé USB, et cela a commencé le clonage. A pris un bon moment, mais a terminé avec succès:

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

EDITÉ3:

Après avoir créé le fichier brut, je cours testdiskavec Deeper Search, j'obtiens une liste comme celle-ci: entrez la description de l'image ici

Ater Deeper Searcha terminé, je reçois une liste comme celle-ci:

entrez la description de l'image ici

Mais je ne sais pas lequel est quel instantané ... Des idées?

719016
la source
@Takkat, ça a l'air cool. Comment puis je faire ça?
719016
@Takkat, je l'ai fait et monté à l'aide de gnome nautilus, mais je crois qu'il a monté une version vieille de deux mois de la machine.
719016
2
Le problème ici n'est pas de savoir comment récupérer le disque, mais comment le fusionner avec l'instantané. Si vous essayez de cloner votre vdi, il aurait un autre uuid et l'instantané ne fonctionnera pas avec lui et vous perdriez les dernières données. Je n'utilise pas d'instantanés de façon régulière car j'ai eu des disques corrompus dans le passé et j'ai pu récupérer le disque de base mais j'ai toujours perdu les deltas. J'espère que quelqu'un ici donne une bonne recette pour récupérer à la fois la base et le delta.
Pablo Marin-Garcia
1
C'est pour la prochaine fois: ne stockez jamais de données sur une machine virtuelle, montez toujours un disque externe ... ou effectuez des sauvegardes / synchronisations fréquentes via rsync.
Dee
1
Essayez de cloner le snapshot le plus récent, pas le disque d'origine. Vous devez utiliser Vboxmanage clonehd 2208...(copiez l'UUID le plus récent ici). Voir serverfault.com/a/506581/195528
Rmano

Réponses:

21

De la ligne de commande

Dans le cas où nous utilisons Ubuntu comme hôte, nous pouvons convertir notre disque .vdi en disque brut avec la commande suivante:

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

Nous pouvons ensuite ouvrir testdisk Installer testdisk avec ce fichier pour récupérer des fichiers sur l'image du lecteur virtuel (voir aussi ci-dessous):

testdisk <clone.raw>

D'une machine virtuelle

Dans le cas où l'image du lecteur VDI cassé est toujours enregistrée avec Virtual Box, nous pourrons peut-être ajouter cette image en tant que lecteur à notre nouvelle machine virtuelle:

entrez la description de l'image ici

Démarrez votre Ubuntu virtuel auquel nous avons ajouté le .vdi cassé mais ne montez pas le lecteur .

  1. Créez un répertoire sur une partition montée là pour contenir les données récoltées (par exemple ~/rescued),

  2. Installez testdisk Installer testdisk sur la machine virtuelle.

  3. Lancez testdisk depuis un terminal:

    sudo testdisk
    
  4. Choisissez le lecteur approprié pour récolter les données (ici illustré pour /sdb) et sélectionnez[Proceed]

    entrez la description de l'image ici

  5. Choisissez la disposition de partition appropriée (généralement Intel)

  6. Sélectionnez [Analyse]-[Quick Search]

  7. Sélectionnez la partition qui contient les données à récolter (ici, une seule partition NTFS était présente):

    entrez la description de l'image ici

  8. Appuyez sur P pour répertorier les fichiers de cette partition.

  9. Accédez au répertoire contenant les données. Affichez les noms de fichiers pour vous assurer que vous avez bien choisi les bons.

  10. Sélectionnez les répertoires ou fichiers à récolter en utilisant : . Tous les fichiers / répertoires sélectionnés seront marqués en vert:

    entrez la description de l'image ici

  11. Appuyez sur les majuscules C pour copier tous les répertoires / fichiers sélectionnés dans le répertoire de secours qui sera sélectionné à l'étape suivante.

  12. Choisissez un répertoire sur la ou les partitions montées de votre machine virtuelle Ubuntu pour contenir les données sauvées:

    entrez la description de l'image ici

  13. Appuyez sur c pour commencer à copier les données du fichier .vdi cassé vers notre répertoire de secours dans votre machine virtuelle saine.

Remarques:

  • Dans le cas où nous ne pouvons pas voir nos fichiers avec l' [Quick Search]option en 6. nous pouvons avoir à effectuer un [Deeper Search]. Cela répertorie également les partitions supprimées et écrasées précédentes. Nous devons donc nous assurer de sélectionner les partitions appropriées où résident nos données.

  • Si nous avions pris des instantanés du .vdi, nous pourrions les trouver dans, ~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdkmais chaque fois que nous aurions utilisé la fonction d'instantané de Virtual Box, toutes les modifications apportées à un instantané seront écrites dans un fichier différentiel.

    Pour fusionner le fichier différentiel avec le disque dur, nous devons supprimer tous les snapshots (ce qui n'est probablement pas ce que nous voulons car nous pourrions simplement restaurer le snapshot précédent plutôt que d'appeler à la récupération des données), ou nous devons cloner le lecteur de la machine en utilisant:

    VBoxManage clonehd <name_of_source> <clone>
    

    Ensuite, nous lions le clone à notre machine virtuelle de secours comme illustré ci-dessus.

  • L'écriture dans le fichier .vdi cassé ne doit être effectuée qu'après la sécurité des données, car cela pourrait endommager davantage le système de fichiers.

  • Dans le cas où notre secours Ubuntu est trop petit pour contenir les données récupérées, nous pouvons créer un autre nouveau lecteur virtuel pour le lier à la machine virtuelle. Ce lecteur doit ensuite être monté dans la machine virtuelle pour pouvoir y enregistrer les données de testdisk.

Takkat
la source
merci pour ces instructions brillamment détaillées. Je les ai suivis correctement et j'ai ajouté les fichiers à copier dans mon dossier sauvé. La copie a réussi mais l'horodatage des fichiers était assez ancien: l'été 2013 au lieu de deux jours auparavant. Je ne me souviens pas si j'ai fait quelque chose en particulier il y a 8 mois, mais à première vue, mes fichiers d'il y a deux jours n'étaient pas là. J'utilise maintenant Deeper Searchpour le parcourir à nouveau.
719016
@ 213441265152351 - jetez également un œil au dossier des instantanés ... il peut y avoir un .vmdk plus récent (du moins c'était avec mes systèmes ici). J'espère que vous trouverez vos données :)
Takkat
J'ai fait un Deeper Search, et après quelques heures, j'ai parcouru à nouveau le contenu que je voulais récupérer: ils pointent toujours vers une version été 2013 de la machine virtuelle, plus tôt que le simple montage de la partition avec gnome nautilus, qui me donnait un janvier Version 2014, mais toujours pas en mesure de trouver les fichiers d'il y a deux jours.
719016
1
@ 213441265152351: eh bien c'est plus compliqué alors. Il se peut que les images de différenciation n'aient pas encore été écrites correctement sur le disque lorsque le "plantage" s'est produit. Vous pouvez essayer de jeter un œil au disque à partir de Virtual Media Manager (voir virtualbox.org/manual/ch05.html#diffimages ) pour voir si c'était le cas, mais je dois dire que je n'aurai alors pas un bon idée sur la façon de récupérer les données de ces images.
Takkat
2
@Rmano: en fait, un VDI cloné n'inclura aucun instantané mais sera le dernier état actuel de la machine virtuelle avec les différences fusionnées. Ce n'est que dans le cas où nous devons cloner un instantané antérieur que nous pouvons utiliser un instantané VDI pour cloner, mais toutes les modifications ultérieures à l'instantané ne seront pas incluses dans le clone.
Takkat
5

1) Essayez de récupérer l'instantané par l'UUID, utilisez le hack suivant:

  • choisissez l'UUID de l'état que vous souhaitez récupérer.
  • Ouvrez le fichier .xml, de préférence dans un outil (Internet Explorer fonctionne) qui permet une navigation facile du fichier XML.
  • Au niveau TRÈS BAS, dans la section Contrôleurs de stockage, recherchez l'UUID de l'état actuel et notez le nom StorageController =, type = et les paramètres AttachedDevice type =, port = et device =.
  • Au milieu, trouvez l'instantané que vous souhaitez.
  • Dans la section Storage Controller de l'instantané, recherchez le AttachedDevice avec les valeurs (nom / type / type / port / périphérique) qui correspondent aux valeurs récupérées ci-dessus.
  • Cette UUID d'image identifie l'image de capture instantanée du disque dur. Supprimez les crochets {} et

entrez la commande C:> VBoxManage clonehd <UUID> CloneDisk.vdi

J'espère que cela aide, j'ai trouvé la solution ici: ( https://forums.virtualbox.org/viewtopic.php?t=791 )

2) si les étapes de 1) ne fonctionnent pas, voici d'autres étapes que vous pouvez essayer. Comment cloner l'état actuel d'un disque:

  • Ouvrez le Virtual Media Manager (Menu: Fichier> Virtual Media Manager).
  • Accédez au disque dur que vous souhaitez cloner et développez complètement l'arborescence (utilisez la touche * du pavé numérique).
  • Recherchez le fichier {hexUUID} .vdi attaché à la machine virtuelle dont vous souhaitez cloner l'état actuel. Ce sera (l'un des) fichiers feuilles à la fin d'une branche. Lorsque vous le sélectionnez, le texte "Attaché à:" en bas de la fenêtre indiquera: "Attaché à:", sans aucun (nom de l'instantané) entre crochets après.
  • Cliquez sur le nom du fichier à droite de «Emplacement:» affiché en bas de la fenêtre.
  • Ctrl + C / Copier pour copier le texte dans le presse-papiers, qui ressemblera à: (chemin) {b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdi
  • Ctrl + V / Coller et extraire la valeur hexUUID (en supprimant les crochets {}) et exécutez clonehd pour le cloner!

Cette solution est d'ici: ( http://www.im-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ ) Les deux parlent principalement de la même chose.

Dee
la source
1

J'ai eu un système Linux corrompu /et je n'ai fsckpas pu le réparer . J'ai utilisé l'approche simple suivante:

  1. Ajoutez un nouveau VDI de remplacement à la machine.
  2. Téléchargez une nouvelle ISO Linux.
  3. Démarrez et installez un nouveau linux sur le disque que vous avez ajouté dans (1).
  4. Montez le disque sur votre nouveau système et copiez les fichiers dont vous avez besoin. Habituellement, cela signifie copier le /home/user/dossier. N'oubliez pas de copier les fichiers cachés (fichiers de paramètres).

A bien fonctionné pour moi. La corruption du disque ne faisait qu'entraver le démarrage, il n'y avait aucune perte de données dans mon dossier personnel.

Deleet
la source