如何删除 Virtualbox 中的所有 Snaphosts?

如何删除 Virtualbox 中的所有 Snaphosts?

到目前为止,我每次都从快照保存和加载机器,但我的 SSD 磁盘现在已满,我什么也做不了。快照文件夹使用了 70 GB,我现在想做的是删除所有快照,每次关闭机器,然后在没有快照的情况下打开。有没有办法将最后的快照状态加载到机器中并删除所有快照?

答案1

已请求在 Oracle 上删除所有快照的功能增强和错误追踪,并且还在Virtualbox 的论坛。遗憾的是,据我所知,这仍然无法实现;开箱即用。

但是,有一个解决方案!

以一些 Python 和 XAML 源代码的形式:VirtualBox 快照删除 GUI

您需要将其编译成.exe文件才能运行。有关如何执行此操作的信息可在 Stack Overflow 上找到:将 IronPython WPF 项目编译为 exe

该工具的作者相信它也将与 OS X 和 Linux 主机兼容。

答案2

这个答案有效,但比 GUI 替代方案更粗糙(5 年后,它仍然没有移植到 Windows 以外的任何平台上)。这可以在 BSD、Linux、Mac 上运行,但不可以在 Windows 上运行(没有 Cygwin)。** 运行风险自负 **

DEBUG=true; PROMPT=true

vbox_delete_all_snapshots() { 
  vboxmanage snapshot "$1" list | 
    tac |perl -lane 'print $1 if /UUID: ([a-z0-9-]+)/' |
    xargs ${PROMPT:+-p} -n1 ${DEBUG:+echo} vboxmanage snapshot "$1" delete
  if $DEBUG && [ $? = 0 ] ; then
    echo "The above commands were NOT run. Unset DEBUG (and PROMPT if you feel lucky) to do so."
  fi
}
read -p"Enter the name of the VM (or its ID): " vmname; vbox_delete_all_snapshots "$vmname"

注意事项

  • 如果没有快照,Linux 会报错。如果你使用的是 Linux/GNU,你可以将-r选项添加到xargs命令
  • 要实际运行命令,请执行unset DEBUG。要运行命令而不对每个命令进行提示,请执行unset PROMPT
  • 这应该可以处理正常的快照“树”,但我只在每个快照恰好有 0 或 1 个子快照的情况进行了测试。

示例输出

Deleting snapshot 'B5' (a02cb9e8-c5be-425d-9bcd-806d72e5a083)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'B4' (422b29b8-cf79-4c92-a415-a08c1d3dd5a0)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'B3' (c1ed469f-ffc3-4cb8-81fe-bbf6581e5858)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'b2' (c0fa9d90-6293-46e5-bcd7-25f2b36f95c4)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'B1' (894147cb-2cc0-48e3-86c7-bec156da762a)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'test' (44a69565-1354-4b98-a2cf-64fd7caa6c56)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

相关内容