Voici comment j'ai résolu mon problème.
J'ai d'abord annulé la modification de l'UUID sur mon fichier VDI de base en utilisant la fonction script par jordoncmm
J'ai ensuite essayé de modifier simplement les chemins dans le fichier vbox pour qu'ils correspondent au nouvel emplacement. Cela n'a pas fonctionné car différentes erreurs sont apparues et je n'ai même pas pu ajouter la VM en utilisant le fichier vbox.
J'ai donc trouvé ceci article de blog par Peter Porter qui a suggéré :
comme chaque .vdi ne contient que les secteurs modifiés par rapport au le dernier .vdi, copier les .vdi dans l'ordre chronologique devrait nous fournir un .vdi contenant une copie complète de tous les snapshots précédents.
...
Utilisez la commande "VBoxManage clonehd" pour créer un nouveau fichier .vdi basé sur votre fichier d'origine. l'original, puis ajoutez chaque fichier suivant en utilisant l'argument l'argument "-existing" pour ajouter simplement les données au .vdi existant que vous que vous construisez. La liste suivante de commandes est basée sur mon exemple ci-dessus :
VBoxManage clonehd Machine.vdi Machine-full.vdi
VBoxManage clonehd Snapshots{UUID1}.vdi Machine-full.vdi
VBoxManage clonehd Snapshots{UUID2}.vdi Machine-full.vdi
VBoxManage clonehd Snapshots{UUID3}.vdi Machine-full.vdi
VBoxManage clonehd Snapshots{UUID4}.vdi Machine-full.vdi
Cela vous donnera un fichier "Machine-full.vdi" qui représente l'état complet de votre complet de votre machine à l'état actif sans aucune relation avec les fichiers les fichiers .vdi parents. Vous pouvez maintenant utiliser le fichier "Machine-full.vdi" pour les opérations suivantes sur une nouvelle machine virtuelle ou modifier votre VM existante, en supprimant l'ancien fichier fichier .vdi et ajouter ce fichier .vdi.
Avec un peu d'ajustement, cela semble fonctionner pour moi :
Il s'agit du disque dur et de ses instantanés :
<HardDisk uuid="{ed1428ca-76be-440a-894b-e666b50f5c86}" location="H:/vm/ft.vdi" format="VDI" type="Normal">
<HardDisk uuid="{8d8be78f-6648-4503-bee3-8810cb853a99}" location="Snapshots/{8d8be78f-6648-4503-bee3-8810cb853a99}.vdi" format="VDI">
<HardDisk uuid="{cce0ee4f-5052-4be7-81ff-47ea08202716}" location="Snapshots/{cce0ee4f-5052-4be7-81ff-47ea08202716}.vdi" format="VDI">
<HardDisk uuid="{c297d4b9-972d-4b07-a839-5d76ee8d0387}" location="Snapshots/{c297d4b9-972d-4b07-a839-5d76ee8d0387}.vdi" format="VDI">
<HardDisk uuid="{8e9ca914-648f-464c-b515-2606c644d7f0}" location="Snapshots/{8e9ca914-648f-464c-b515-2606c644d7f0}.vdi" format="VDI"/>
</HardDisk>
</HardDisk>
</HardDisk>
</HardDisk>
Voici les commandes que j'ai exécutées (désolé, certaines parties sont coupées par Windows...) :
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd N:\vm\ft.vdi N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd "N:\vm\VirtualBox VMs\lfs\Snapshots\{8d8be78f-6648-4503
VBoxManage.exe: error: Parent medium with UUID {ed1428ca-76be-440a-894b-e666b50f5c86} of the medium 'N:\vm\Vi
03-bee3-8810cb853a99}.vdi' is not found in the media registry ('C:\Users\ <user>/.VirtualBox\VirtualBox.xml')
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component Medium, interface IMedium, callee IUnknow
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pM
xManageDisk.cpp
Il semble que je doive ajouter une entrée dans le fichier VirtualBox.xml sous MediaRegistry->HardDisks, mais je dois m'assurer d'y ajouter chaque snapshot dans l'ordre chronologique après chaque copie. Donc c'est comme ça :
Copy VM
Add entry to VirtualBox.xml
Copy VM ...
Et le reste de ce que j'ai fait au cas où ça aiderait quelqu'un d'autre :
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{8d8be78
_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{cce0ee4f-5052-4be7-81ff-47ea08202716}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{c297d4b9-972d-4b07-a839-5d76ee8d0387}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{8e9ca914-648f-464c-b515-2606c644d7f0}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
Et puis j'ai simplement créé une nouvelle VM en utilisant le ft_full.vdi comme base. J'ai fait correspondre le reste des paramètres dans le panneau de paramètres du gui.