Вот как я решил свою проблему.
Сначала я отменил изменение UUID в моем базовом файле VDI, используя скрипт от jordoncm
Затем я попытался просто изменить пути в файле vbox в соответствии с новым местоположением. Это не сработало, так как появлялись различные ошибки, и я даже не смог добавить виртуальную машину с помощью файла vbox.
Таким образом, я нашел эту статью в блоге Питера Портера, который предложил:
поскольку каждый .vdi содержит только те сектора, которые были изменены с последнего .vdi, копирование .vdi в хронологическом порядке должно дать нам .vdi, содержащий полную копию всех предыдущих снимков.
...
Используйте команду «VBoxManage clonehd», чтобы создать новый файл .vdi на основе вашего оригинала, затем добавьте в каждый последующий файл, используя аргумент «-existing», чтобы просто добавить данные в существующий .vdi, который вы создаете. Следующий список команд основан на моем примере выше:
VBoxManage clonehd Machine.vdi Machine-full.vdi
VBoxManage clonehd Снимки {UUID1} .vdi Machine-full.vdi
VBoxManage clonehd Снимки {UUID2} .vdi Machine-full.vdi
VBoxManage clonehd Снимки {UUID3} .vdi Machine-full.vdi
VBoxManage clonehd Снимки {UUID4} .vdi Machine-full.vdi
Это даст вам файл «Machine-full.vdi», который представляет полное состояние вашего компьютера в активном состоянии без какого-либо отношения к родительским файлам .vdi. Теперь вы можете использовать этот файл «Machine-full.vdi» на новой виртуальной машине или отредактировать существующую виртуальную машину, удалив старый файл .vdi и добавив этот .vdi.
С небольшой настройкой, которая, казалось, сработала для меня:
Это жесткий диск и его снимки:
<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>
Это команды, которые я выполнил (извините, некоторые из них отрезаны от окон ...):
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
Дерьмо, кажется, мне нужно добавить запись в VirtualBox.xml в MediaRegistry-> HardDisks, но я должен обязательно добавлять каждый снимок к нему в хронологическом порядке после каждой копии. Так вот как это:
Copy VM
Add entry to VirtualBox.xml
Copy VM ...
И остальное, что я сделал на случай, если это кому-нибудь еще поможет:
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
А потом я просто создал новую виртуальную машину, используя в качестве базы ft_full.vdi. Соответствует остальным настройкам в панели настроек графического интерфейса.