服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-16 简米科技 3,456 字 8 分钟阅读

虚拟机拍照命令是什么?怎么在虚拟机里执行拍照操作?

导读在VMware Workstation中使用vmrun命令,在VirtualBox中使用VBoxManage snapshot命令,或者直接通过图形界面的快照功能一键完成,所谓"拍照",在虚拟化领域中的标准术语是快照(Snapshot),它记录的是虚拟机在某一时刻的磁盘状态和内存状态,用于后续的快速回滚,下面我……

在VMware Workstation中使用vmrun命令,在VirtualBox中使用VBoxManage snapshot命令,或者直接通过图形界面的快照功能一键完成。所谓"拍照",在虚拟化领域中的标准术语是快照(Snapshot),它记录的是虚拟机在某一时刻的磁盘状态和内存状态,用于后续的快速回滚,下面我直接带你走一遍命令和界面操作两条路。

虚拟机拍照命令是什么?先分清两个主流平台

很多朋友在搜索"虚拟机拍照命令"时,其实并不清楚自己用的是哪个虚拟化软件,行业共识认为,市面个人电脑上使用率最高的就是VMware Workstation和Oracle VM VirtualBox这两款,它们的拍照命令完全不同,记混了会直接报错。

VMware Workstation的拍照命令:vmrun

VMware自带的命令行工具vmrun藏在安装目录里,默认路径是C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe,使用前需要先把该目录加入系统环境变量PATH,或者直接在CMD中切换到该目录执行。

创建快照的命令格式如下:

vmrun snapshot "虚拟机文件路径.vmx" 快照名称

举个例子,你要给位于D:\VMs\Ubuntu\Ubuntu.vmx的虚拟机拍一张名为"干净系统"的快照,就执行:

vmrun snapshot "D:\VMs\Ubuntu\Ubuntu.vmx" 干净系统

这里有个细节极易踩坑:虚拟机必须处于关闭或挂起状态,否则命令会提示无法创建快照,虚拟机文件路径必须用英文引号包住,路径中不能有空格的话可以省略。

VirtualBox的拍照命令:VBoxManage

VirtualBox的命令行工具叫VBoxManage,在安装目录的Oracle\VirtualBox文件夹下,它的快照命令层级更清晰,分两步走。

第一步,列出当前虚拟机名称,确保拼写准确:

VBoxManage list vms

第二步,执行拍照,命令格式:

VBoxManage snapshot "虚拟机名称" take "快照名称"

虚拟机拍照命令是什么?怎么在虚拟机里执行拍照操作?

比如给名为"CentOS7"的虚拟机拍一张"初始化完成"的快照:

VBoxManage snapshot "CentOS7" take "初始化完成"

虚拟机里执行拍照操作的图形界面流程

命令虽快,但多数新手更习惯用鼠标点。不用记命令也能完成拍照,下面是两个平台的完整点击路径。

VMware Workstation图形界面操作步骤

  1. 打开VMware Workstation,在左侧库中选中目标虚拟机。
  2. 确保虚拟机处于关闭或挂起状态(右键虚拟机标签,点击"电源"→"挂起客户机"即可)。
  3. 点击顶部菜单栏的"虚拟机",在下拉菜单中选择"快照"→"拍摄快照"。
  4. 在弹出的对话框中填写快照名称和备注,安装完Python环境之后"。
  5. 点击"拍摄快照"按钮,等待右下角进度条跑完。

之后想恢复,点击"虚拟机"→"快照"→"快照管理器",选中任意快照点"转到"即可。

VirtualBox图形界面操作步骤

  1. 打开VirtualBox主界面,选中虚拟机,点击工具栏的"备份"按钮(形状是一个蓝色文件夹带箭头)。
  2. 在"备份"窗口中点击"生成备份"图标(铅笔加纸张的图标)。
  3. 输入快照名称,系统更新前",勾选"包含系统内存状态"可以保存当前运行中的应用现场。
  4. 点击"确定",右侧列表会出现该快照,双击后点击"恢复备份"即可回滚。

虚拟机连续拍照命令怎么执行?批量自动化实战

如果你做测试环境,需要每小时自动拍一张快照,连续拍照命令就派上用场了。连续拍照的本质是循环执行快照命令,Windows下用批处理,Linux下用Shell脚本。

Windows批处理实现定时连续快照(VirtualBox示例)

写一个auto_snapshot.bat文件:

@echo off
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set today=%%a%%b%%c
VBoxManage snapshot "WebServer" take "auto_%today%_%time:~0,2%"

虚拟机拍照命令是什么?怎么在虚拟机里执行拍照操作?

配合Windows任务计划程序,设置为每2小时执行一次,就能实现无人值守的连续快照,注意%time:~0,2%取的小时数在上午会带空格,建议改用%time:~0,2%前先set hour=%time:~0,2%并替换空格。

Linux Shell脚本实现定时快照(VMware示例)

在装有vmrun的Linux宿主机上,编辑snapshot_cron.sh:

#!/bin/bash
STAMP=$(date +%Y%m%d_%H%M)
vmrun snapshot "/vm/ubuntu.vmx" "cron_$STAMP"

加入crontab:

0 /4    /opt/scripts/snapshot_cron.sh

快照数量太多怎么办?删除与整理命令

快照不会无限占用空间,但数量多了会影响虚拟机性能,因为VMware和VirtualBox的快照采用链式存储,读取时需要回溯多个层。

VMware删除快照命令

vmrun deleteSnapshot "虚拟机文件路径.vmx" 快照名称

VirtualBox删除快照命令

VBoxManage snapshot "虚拟机名称" delete "快照名称"

拍照失败常见原因排查

很多人在执行虚拟机拍照命令时收到错误提示,大概率是下面几种情况。

  • 虚拟机正在运行且未启用内存快照:部分配置下,VMware不支持对运行中虚拟机拍摄内存快照,请先挂起或关机。
  • 磁盘空间不足:快照会占用宿主机磁盘空间,建议预留至少虚拟机磁盘文件大小20%的剩余空间。
  • 路径包含中文或特殊字符:命令行工具对非ASCII字符兼容性一般,把虚拟机路径改为纯英文目录可规避多数问题。
  • 权限不足:确保执行命令的终端以管理员身份运行,尤其对位于C盘Program Files下的虚拟机。

业内专家指出,快照不是备份的替代品,快照文件与虚拟机磁盘文件存储在同一位置,一旦宿主机的物理磁盘损坏,快照同样会丢失,重要数据应定期导出OVA文件或复制磁盘文件到独立存储介质上。

虚拟机拍照命令是什么?怎么在虚拟机里执行拍照操作?

快照命令与截图命令的区别

有些新朋友会把"虚拟机拍照命令"理解为截屏,这在搜索时会产生歧义,虚拟机截图获取的是当前屏幕的像素图像,而快照保存的是CPU、内存、磁盘的完整运行状态,两者容量天差地别,需要截取虚拟机屏幕图像时,VMware用vmrun并不支持截图,应使用宿主机自带截图工具,或VirtualBox的VBoxManage controlvm "虚拟机名" screenshot "输出文件.png"命令完成。

Q&A:虚拟机快照常见疑问解答

Q1:虚拟机拍照命令和物理机Ghost备份有什么区别?

快照是增量式的状态记录,创建速度极快,几秒即可完成,恢复时也是瞬间切换,而Ghost备份等物理机工具是完整镜像复制,耗时长、恢复慢,但快照无法脱离宿主机独立存在,Ghost备份可以制作成光盘启动盘,在系统完全崩溃时从外部恢复。

Q2:给虚拟机多次拍照会不会越用越卡?

会,每张快照都会创建一个差异磁盘文件,读取时需要依次回溯快照链,链越长,虚拟机磁盘I/O延迟越高,建议控制在3-5个关键节点以内,用完后及时删除,不要拿快照当日常备份用,据多数运维人员的经验,快照链长度超过10层后,开机速度会有可感知的下降。

Q3:拍快照时虚拟机里的数据库数据安全吗?

对于运行中且内存存在脏数据的数据库,快照只能保证文件系统层面的崩溃一致性,无法保证数据库事务的一致性,拍快照前最好先优雅关闭数据库服务,或者使用数据库自带的备份工具导出数据后再拍快照,否则恢复后可能遇到数据表损坏需要修复。

快照命令是虚拟化运维的基础技能,掌握VMware和VirtualBox这两条命令分支,配合图形界面的操作路径,你就已经能应对绝大多数日常场景,优先记住命令,其次记住操作入口,最后记住快照不是备份,这套逻辑会帮你少走不少弯路。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱