黄聪:在VirtualBox里复制VDI文件[转]

原文地址:http://blog.sina.com.cn/s/blog_591a2c940100aree.html

在VirtualBox的快速修复界面里,可以随时生成当前状态的备份。当生成了备份之后,会在Snapshots目录下创建一个新的VDI文件,之后对当前状态所做的一切操作都将针对最新的VDI文件,而VDI目录下的初始VDI文件就不会再改变了。

我一般在装好Guest OS并做完打补丁、安装常用软件等操作后就创建一个备份,如果GuestOS发生了问题可以随时恢复到干净的系统。但是有时需要在不同的软件环境下做不同的事情,开始时我希望能用一个VDI文件生成两个不同的备份并分别配置成不同的环境,但是发现VirtualBox的备份是线性的,也就是说只能针对当前状态做一个备份,而恢复备份时也只能恢复到上一个备份的状态,不能同时存在两个不同的当前状态。

没有办法,只能把初始的VDI文件复制出来一份用于另外的环境。但是很快发现,复制出来的VDI文件无法在虚拟介质管理器中注册,因为每个VDI文件都有一个唯一的uuid,而VirtualBox不允许注册重复的uuid。

看了帮助文件后,发现VBoxManage有一个clonevdi方法可以克隆VDI文件,并赋予它一个新的uuid。具体用法是在命令行里执行:

VBoxManage clonevdi 原始VDI文件名 新的VDI文件名

直接写VDI文件名即可,不用指明VDI文件所在路径,新的文件会在全局设定中指定的VDI目录下创建。如果VDI文件名里带有空格,应该在两端加上双引号。VBoxManage命令位于VirtualBox安装目录下,缺省路径是C:\ProgramFiles\Sun\xVM VirtualBox。

用这个方法创建了新的VDI文件后,就可以正常注册并在另一个虚拟机中使用了。


2008-12-25更新:

本月17日VirtualBox发布了2.10版,在这个版本里,VBoxManageclonevdi命令改为了VBoxManage clonehd,它的用法如下:

VBoxManageclonehd         <uuid>|<filename><outputfile>
                           [-formatVDI|VMDK|VHD|RAW|<other>]
                           [-remember]

可以看到,使用-format参数,除了VDI格式的虚拟磁盘文件以外,它还支持VMDK(VMWare)、VHD(VirtualPC)等格式。为了向下兼容,它仍然支持使用VBoxManage clonevdi命令来复制VDI格式的文件。


2009-08-09更新:

在VirtualBox的最新版本中,已经可以将同一个vdi文件用于多个虚拟系统了。使用方法是:先按正常方式创建一个虚拟系统,创建或选择一个vdi文件,然后做一个备份;接下来创建第二个虚拟系统,再次选择这个vdi文件,同样也创建一个备份。这样,两个虚拟系统就可以各自在不同的环境下运行了,初始的vdi文件是不变的,各自的更改记录在备份文件中。


2009-12-05更新:

在刚刚发布的VirtualBox 3.1版中,增加了分支快照(branchedsnapshots)功能,可以恢复任意时刻的备份了,请参考《VirtualBox分支快照功能的使用》。

原文地址:https://www.cnblogs.com/huangcong/p/1830929.html