手动备份VMware虚拟机快照不仅耗时,还容易遗忘,一旦系统或数据出现问题,可能面临难以挽回的损失。本文将详细介绍如何通过编写批处理脚本并结合Windows计划任务,实现VMware虚拟机快照的定期自动备份,从而确保数据安全与业务连续性。
一、自动备份的核心价值
- 防止误操作:避免因人为失误导致关键虚拟机文件或快照被删除。
- 应对系统异常:当宿主机发生意外关机、蓝屏等问题时,可通过备份快速恢复虚拟机状态。
- 提升运维效率:一次设置,长期生效,尤其适合管理多个虚拟机的开发、测试或生产环境。
二、准备工作
- 环境确认:确保使用的是VMware Workstation Pro 16或更高版本(低版本操作类似)。
- 规划备份路径:在容量充足的磁盘(如D盘或外部存储)上创建专用文件夹,例如
D:\VM_Backup。
- 确认虚拟机标识:在VMware左侧列表中,确认需要备份的虚拟机名称。建议使用英文命名,避免脚本处理时出现编码问题。
三、核心步骤:创建自动备份批处理脚本
我们将通过一个批处理脚本,实现创建快照并备份关键文件的全流程自动化。熟练掌握脚本编写是高效运维/DevOps的重要技能。
Step 1:创建备份脚本文件
新建一个文本文件,将其重命名为 VM_auto_backup.bat(确保扩展名为 .bat)。使用文本编辑器(如记事本、VS Code)打开,并复制以下脚本内容。
Step 2:编辑与配置脚本
将脚本中高亮标记的三个路径变量修改为你自己环境的实际路径。
@echo off
chcp 65001 >nul
title VMware自动备份脚本
echo =======================================
echo VMware虚拟机自动备份工具
echo =======================================
REM 【重要】修改以下三个变量为你的实际路径
set VMX_PATH="D:\Program Files\CentOS7_client2\CentOS7_client2.vmx"
set BACKUP_DIR="D:\VM_Backup\"
set VMRUN_PATH="C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe"
REM 如果不知道vmrun.exe路径,可在CMD中执行:dir /s "C:\vmrun.exe" 进行查找
echo.
echo 步骤1:检查路径...
if not exist %VMX_PATH% (
echo 错误:找不到虚拟机配置文件!
echo 请检查路径:%VMX_PATH%
pause
exit /b 1
)
if not exist %VMRUN_PATH% (
echo 错误:找不到vmrun.exe!
echo 请修改脚本中的VMRUN_PATH变量为正确路径
echo 当前路径:%VMRUN_PATH%
pause
exit /b 1
)
if not exist %BACKUP_DIR% (
mkdir %BACKUP_DIR%
echo 创建备份目录:%BACKUP_DIR%
)
echo.
echo 步骤2:创建快照...
set SNAPSHOT_NAME=AutoBackup_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%
echo 快照名称:%SNAPSHOT_NAME%
cd /d "%~dp0"
%VMRUN_PATH% -T ws snapshot %VMX_PATH% %SNAPSHOT_NAME%
if errorlevel 1 (
echo 错误:创建快照失败!
echo 请检查:
echo 1. 虚拟机是否已关闭或暂停?
echo 2. VMware服务是否正常运行?
pause
exit /b 1
)
echo 快照创建成功!
echo.
echo 步骤3:备份虚拟机关键文件...
set VM_DIR="D:\Program Files\CentOS7_client2\"
xcopy %VM_DIR%*.vmdk %BACKUP_DIR% /Y /I /C /H
xcopy %VM_DIR%*.vmx %BACKUP_DIR% /Y /I /C /H
xcopy %VM_DIR%*.vmsd %BACKUP_DIR% /Y /I /C /H
xcopy %VM_DIR%*.vmsn %BACKUP_DIR% /Y /I /C /H
xcopy %VM_DIR%*.nvram %BACKUP_DIR% /Y /I /C /H
xcopy %VM_DIR%*.vmxf %BACKUP_DIR% /Y /I /C /H
echo.
echo 步骤4:记录备份日志...
echo [%date% %time%] 成功创建快照:%SNAPSHOT_NAME% >> %BACKUP_DIR%backup_log.txt
echo 备份文件列表: >> %BACKUP_DIR%backup_log.txt
dir %BACKUP_DIR%*.vmdk /b >> %BACKUP_DIR%backup_log.txt
echo --------------------------------------- >> %BACKUP_DIR%backup_log.txt
echo.
echo =======================================
echo 备份完成!
echo 备份时间:%date% %time%
echo 快照名称:%SNAPSHOT_NAME%
echo 备份位置:%BACKUP_DIR%
echo =======================================
echo.
pause
脚本功能说明:
- 路径检查:验证虚拟机配置文件、
vmrun.exe工具及备份目录是否存在。
- 创建快照:调用VMware命令行工具
vmrun,为指定虚拟机创建一个包含时间戳的快照。
- 文件备份:将虚拟机的核心文件(
.vmdk, .vmx, .vmsd等)复制到备份目录。
- 生成日志:在备份目录下生成
backup_log.txt文件,记录每次备份的详细信息。
Step 3:测试脚本
双击运行 VM_auto_backup.bat,观察命令行窗口的输出。如果一切正常,你将看到“备份完成”的提示,并在VMware的快照管理器中看到新创建的以“AutoBackup_”开头的快照,同时备份目录下应有相应的文件。



四、实现完全自动化:配置Windows计划任务
脚本测试成功后,我们可以通过Windows计划任务来实现定时自动执行,这是实现自动化运维的关键一环。
-
打开任务计划程序:在Windows搜索栏输入“任务计划程序”并打开。

-
创建基本任务:在右侧操作栏点击“创建基本任务”。

-
配置触发器:为任务命名(如“VMware自动备份”),并设置执行频率,例如“每天”或“每周”。

-
配置操作:
- 操作选择“启动程序”。
- 在“程序或脚本”栏,浏览并选择你编写好的
VM_auto_backup.bat 文件。
- 在“起始于”栏,填写该批处理脚本所在的目录路径(如
D:\Scripts\)。

-
完成并验证:完成向导后,你可以在任务计划程序库中找到该任务。可以右键手动“运行”一次进行最终验证。配置好Windows计划任务后,备份任务将在设定的时间点自动执行。
五、后续维护建议
- 监控备份状态:定期检查
backup_log.txt 文件,确认备份任务是否按时成功执行。
- 管理备份存储:监控备份目录所在磁盘的空间使用情况,避免因磁盘写满导致备份失败。可结合文件生命周期策略,定期清理早期的备份文件。
- 脚本扩展:可根据需要修改脚本,增加备份成功后发送邮件通知、备份到网络驱动器或云存储等功能。
通过以上步骤,你已成功搭建了一套基于Windows系统级的VMware虚拟机自动备份方案,能够有效保障虚拟化环境的数据安全与可恢复性。
|