【发布时间】:2018-05-09 21:54:32
【问题描述】:
我正在尝试编写一个尽可能简单的 bash 脚本,以从“父”虚拟机(称为 peer00)克隆虚拟机。为了克隆这些机器,我首先需要一个快照。
vboxmanage snapshot peer00 delete "MySnapShot"
vboxmanage snapshot peer00 take "MySnapShot"
# for loop to create several machines
现在,如果我在没有 MySnapShot 快照的情况下运行此脚本,我会收到以下错误(显然):
VBoxManage:错误:找不到名为“MySnapShot”的快照 VBoxManage:错误:详细信息:代码 VBOX_E_OBJECT_NOT_FOUND (0x80bb0001),组件 SessionMachine,接口 IMachine,被调用者 nsISupports VBoxManage:错误:上下文:“FindSnapshot(Bstr(a->argv[2]).raw(), pSnapshot.asOutParam())”在文件 VBoxManageSnapshot.cpp 的第 514 行
另一方面,如果我在快照已经存在时运行它,我会得到另一个输出:
0%... 进度状态:NS_ERROR_FAILURE VBoxManage:错误:快照操作失败 VBoxManage:错误:硬盘'/home/pietro/VirtualBox VMs/peer00/Snapshots/{0183ad41-71b6-41bf-af74-38db828b2d82}.vdi'有多个子硬盘(7) VBoxManage:错误:详细信息:代码 NS_ERROR_FAILURE (0x80004005),组件 SessionMachine,接口 IMachine VBoxManage:错误:上下文:“RTEXITCODE handleSnapshot(HandlerArg*)”在文件 VBoxManageSnapshot.cpp 的第 532 行
如何编写一种“if 语句”来检查快照是否已经存在,然后再尝试删除它?此外,为什么我会收到第二个错误?我真的不明白
【问题讨论】:
-
有一个 --uniquename 参数(支持 Number,Timestamp,Space,Force 值)。检查它的行为可能是值得的。
标签: bash virtualbox