找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1757

积分

0

好友

263

主题
发表于 4 天前 | 查看: 14| 回复: 0

手动备份VMware虚拟机快照不仅耗时,还容易遗忘,一旦系统或数据出现问题,可能面临难以挽回的损失。本文将详细介绍如何通过编写批处理脚本并结合Windows计划任务,实现VMware虚拟机快照的定期自动备份,从而确保数据安全与业务连续性。

一、自动备份的核心价值

  • 防止误操作:避免因人为失误导致关键虚拟机文件或快照被删除。
  • 应对系统异常:当宿主机发生意外关机、蓝屏等问题时,可通过备份快速恢复虚拟机状态。
  • 提升运维效率:一次设置,长期生效,尤其适合管理多个虚拟机的开发、测试或生产环境。

二、准备工作

  1. 环境确认:确保使用的是VMware Workstation Pro 16或更高版本(低版本操作类似)。
  2. 规划备份路径:在容量充足的磁盘(如D盘或外部存储)上创建专用文件夹,例如 D:\VM_Backup
  3. 确认虚拟机标识:在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

脚本功能说明

  1. 路径检查:验证虚拟机配置文件、vmrun.exe工具及备份目录是否存在。
  2. 创建快照:调用VMware命令行工具vmrun,为指定虚拟机创建一个包含时间戳的快照。
  3. 文件备份:将虚拟机的核心文件(.vmdk, .vmx, .vmsd等)复制到备份目录。
  4. 生成日志:在备份目录下生成backup_log.txt文件,记录每次备份的详细信息。

Step 3:测试脚本
双击运行 VM_auto_backup.bat,观察命令行窗口的输出。如果一切正常,你将看到“备份完成”的提示,并在VMware的快照管理器中看到新创建的以“AutoBackup_”开头的快照,同时备份目录下应有相应的文件。

成功创建快照图示
备份文件列表图示
备份日志图示

四、实现完全自动化:配置Windows计划任务

脚本测试成功后,我们可以通过Windows计划任务来实现定时自动执行,这是实现自动化运维的关键一环。

  1. 打开任务计划程序:在Windows搜索栏输入“任务计划程序”并打开。
    打开任务计划程序

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

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

  4. 配置操作

    • 操作选择“启动程序”。
    • 在“程序或脚本”栏,浏览并选择你编写好的 VM_auto_backup.bat 文件。
    • 在“起始于”栏,填写该批处理脚本所在的目录路径(如 D:\Scripts\)。
      配置启动程序
  5. 完成并验证:完成向导后,你可以在任务计划程序库中找到该任务。可以右键手动“运行”一次进行最终验证。配置好Windows计划任务后,备份任务将在设定的时间点自动执行。

五、后续维护建议

  • 监控备份状态:定期检查 backup_log.txt 文件,确认备份任务是否按时成功执行。
  • 管理备份存储:监控备份目录所在磁盘的空间使用情况,避免因磁盘写满导致备份失败。可结合文件生命周期策略,定期清理早期的备份文件。
  • 脚本扩展:可根据需要修改脚本,增加备份成功后发送邮件通知、备份到网络驱动器或云存储等功能。

通过以上步骤,你已成功搭建了一套基于Windows系统级的VMware虚拟机自动备份方案,能够有效保障虚拟化环境的数据安全与可恢复性。




上一篇:pgAdmin 4漏洞CVE-2025-13780分析:UTF-8 BOM导致命令执行与修复方案
下一篇:状态机编程在嵌入式开发中的核心优势:逻辑完备性与异步处理实践
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 20:53 , Processed in 0.251503 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表