Ubuntu 上的自动虚拟机备份 - VirtualBox

Ubuntu 上的自动虚拟机备份 - VirtualBox

我在 Virtualbox 上运行了多台虚拟机。我想备份这些虚拟机并将其存储在源代码控制中,以备灾难恢复之用。据我所知,就灾难恢复而言,这些虚拟机的快照无法解决问题。

这些备份将定期进行,我将使用 Jenkins 自动化服务器自动执行这些备份。我一直在使用来自TechRepublic的一篇文章作为从命令行操作 VirtualBox 以及导出虚拟设备的资源。

我对 Jenkins 作业执行的过程的想法如下(所有操作均从命令行执行):

  1. 关闭要备份的特定虚拟机(并保持 virtualbox 运行)。
  2. 运行 VirtualBox 导出命令:

    vboxmanage export UBUNTUSERVER164 -o ubuntu_server_new.ova
    
  3. 运行命令来重新启动虚拟机。

  4. CD 进入存储 VirtualBox 虚拟设备的目录。
  5. 将新创建的虚拟设备(.ova 格式)复制到本地备份目录。
  6. 将复制的.ova 文件压缩(tar)到本地备份目录中。
  7. 删除本地备份目录中 .ova 文件的未压缩副本。
  8. Git 提交压缩的虚拟设备,然后 Git 推送到 BitBucket。

我对使用此方法存在一些疑问:

  • VirtualBox 的虚拟设备默认存储在哪里?
  • 在备份之前关闭虚拟机的 shell 命令是什么样的?
  • 备份后启动虚拟机的 shell 命令是什么样的?

答案1

这是完成您的任务的一个简单方法:

  1. 通过客户机中运行的 SSH 会话关闭客户机

    ssh -t user@virtualmachine sudo poweroff
    
    • VBoxManage controlvm [nameofmachine] poweroff不建议关闭虚拟机,因为这可能会导致数据丢失。
  2. 将虚拟机导出为 OVA 格式

    VBoxManage export [nameofmachine] -o /path/[name].ova
    
    • OVA 格式将使用压缩的 VMDK 格式作为 VDI。可能不需要进一步压缩。
    • 导出需要几杯咖啡的时间。
  3. 将生成的(巨大的)OVA 文件复制到需要备份的任何位置。

  4. 导入备份

    VBoxManage import [filename.ova] [--dry-run] [--vsys 0 --vmname <name>]
    
    • 进行试运行以显示您可能需要的选项。如果您仍保留原始名称,请小心为其赋予另一个名称。
  5. 运行导入的虚拟机

    virtualbox --startvm [name]
    

相关内容