在VirtualBox中合并快照最快的方法

我有很多vdi快照,比如50或70张快照。 我想有一个简单的vdi与当前状态。 这些快照占用太多的磁盘空间,不需要作为快照。

我知道,如果我打电话

VBoxManage clonehd thedisk.vdi thedisk-full.vdi (50-70 times) VBoxManage clonehd {uuid-of-snapshot}.vdi thedisk-full.vdi --existing 

我会得到我想要的。 但这需要很长时间(我的硬件和16G的初始磁盘大小超过了5个小时)。

当然,我尝试VBoxManage snapshot delete ,这是奇怪的:在停止的机器上不工作,可以在运行机器上失败,一旦失败,它将失败所有后续的调用。

有没有办法使许多快照从简单的vdi – 更快?

 $ VBoxManage --version 3.2.14r75509 

find解决scheme。 这和我在这里写的命令的最后一步一样简单。 即

 VBoxManage clonehd fullpath/{uuid-of-last-snapshot}.vdi thedisk-full.vdi 

所以我应该只克隆最后的快照,而不是链中的每个快照。 而且它快了上千%。

uuid可以从VBoxManage list hdds | grep VmName | tail VBoxManage list hdds | grep VmName | tail

谢谢大家!

您可以使用clonevm命令并在外部或辅助驱动器上克隆VM。 如果不指定快照并且不指定模式,则当前状态configuration将被保存为新VM中的唯一状态。 然后您将克隆的VM导入到virtualbox中。

该文档有点模糊,因为它说“如果机器被选中(默认),虚拟机的当前状态没有任何快照克隆”。 这意味着克隆的虚拟机将没有快照树,但是它会将所有快照VDI合并到基本VDI中(否则,当您导入新虚拟机时,它将不起作用)。

例如,我用两个驱动器(C @ 50GB和D @ 250GB)创build了一个虚拟机,并且有大约30个快照,其中快照之间驱动器D上的数据发生了显着变化。 我的同事在他的机器上也需要一个虚拟机的副本,但不关心快照。 所以我跑了下面的命令:

 VBoxManage.exe clonevm "D:\VirtualMachines\DevEnvironment\DevEnvironment.vbox" --basefolder "G:\CopyOfVM\" --options keepallmacs --options keepdisknames 

编辑:不知道如果你必须给虚拟机的完整path,因为文档说你只需要提供一个名称(我正在运行其他命令,所以我现在不能testing)。 在这种情况下,只会是:DevEnvironment

注意:没有指定快照,模式或名称,所有这些都是默认的。 在这种情况下,“G”是一个外部硬盘。 你可能不需要这些选项。 你特别要小心第二个选项(keepdisknames),你必须在导入克隆之前删除原来的虚拟机。

在4.2.10中(不太清楚3.2.14),可以在GUI中删除当前状态和第一个快照之间的中间快照,VBOX会自动合并每个快照之间的差异。 有时,如果您执行了恢复并打破了“线性”树,则会出错,但您只需删除虚拟介质pipe理器中未附加任何内容的任何VDI。

希望这是有帮助的。 祝你好运!