Featured image of post ESXi 虚拟主机备份与恢复指南 💾

ESXi 虚拟主机备份与恢复指南 💾

ESXi 虚拟主机备份与恢复完全指南 💾 导航目录 📚 📥 一

ESXi 虚拟主机备份与恢复完全指南 💾

导航目录 📚

📥 一、准备工作

1. 下载 OVF Tool

官方下载地址: https://developer.vmware.com/web/tool/ovf-tool/

  • 📦 下载文件:VMware-ovftool-4.3.0-12320924-win.x86_64.msi
  • 🔒 建议验证文件哈希值确保完整性
  • 🌐 确保下载版本与您的操作系统架构匹配

2. 安装 OVF Tool

1
2
3
4
5
# 1. 双击安装文件运行安装向导
# 2. 接受许可协议
# 3. 使用默认安装路径:
#    C:\Program Files\VMware\VMware OVF Tool\
# 4. 完成安装

3. 验证安装

1
2
3
4
5
6
7
:: 打开命令提示符,测试安装
cd "C:\Program Files\VMware\VMware OVF Tool"
ovftool --version

:: 应该显示类似信息:
:: OVF Tool version 4.3.0.12320924
:: Build-12320924

4. 环境变量配置(可选)

1
2
3
4
:: 将 OVF Tool 添加到系统 PATH,方便在任何位置使用
setx PATH "%PATH%;C:\Program Files\VMware\VMware OVF Tool\"

:: 重启命令提示符使更改生效

🔍 二、备份前准备

1. 查看虚拟机信息

  1. 登录 ESXi Web 管理界面 (通常为 https://您的ESXiIP/ui)
  2. 导航到"虚拟机"选项卡
  3. 确认要备份的虚拟机名称(例如:iKuai
  4. 记录虚拟机的存储位置和配置信息
  5. 检查虚拟机当前状态

2. 关闭虚拟机

重要:备份前必须关闭虚拟机以确保数据一致性!

1
2
3
4
5
6
7
8
9
# 正常关机步骤:
1. 在 ESXi Web 界面中选择目标虚拟机
2. 点击"关机"按钮(不是强制关闭)
3. 等待虚拟机完全关闭,状态显示为"已关闭"
4. 确认所有服务已正常停止

# 如果正常关机失败,可以使用强制关闭(不推荐):
1. 选择虚拟机
2. 点击"电源""强制关机"

3. 检查存储空间

1
2
3
# 估算备份所需空间:
# 备份文件大小 ≈ 虚拟机实际使用空间 + 元数据
# 建议目标存储空间至少是虚拟机配置大小的 1.5 倍

📦 三、备份批处理脚本

完整备份脚本 (esxi_backup.bat)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
@echo off
chcp 65001 >nul
echo ========================================
echo          ESXi 虚拟机备份工具
echo ========================================
echo.

:: 设置变量
set OVF_TOOL_PATH="C:\Program Files\VMware\VMware OVF Tool\ovftool.exe"
set ESXI_URL="https://192.168.1.100:443"
set ESXI_USERNAME="root"
set ESXI_PASSWORD="your_password"
set VM_NAME="iKuai"
set BACKUP_DIR=%USERPROFILE%\Desktop\ESXi_Backups

:: 创建备份目录
if not exist "%BACKUP_DIR%" (
    mkdir "%BACKUP_DIR%"
    echo ✅ 创建备份目录: %BACKUP_DIR%
)

:: 生成带日期的备份文件名
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (
    set CURRENT_DATE=%%a-%%b-%%c
)
for /f "tokens=1-3 delims=: " %%a in ('time /t') do (
    set CURRENT_TIME=%%a-%%b-%%c
)
set BACKUP_FILENAME=ESXI_%VM_NAME%_%CURRENT_DATE%_%CURRENT_TIME%.ova

echo 📅 备份日期: %CURRENT_DATE%
echo ⏰ 备份时间: %CURRENT_TIME%
echo 🖥️  虚拟机: %VM_NAME%
echo 💾 备份文件: %BACKUP_FILENAME%
echo.

:: 检查 OVF Tool 是否存在
if not exist %OVF_TOOL_PATH% (
    echo ❌ 错误: 未找到 OVF Tool,请检查安装路径
    pause
    exit /b 1
)

:: 执行备份命令
echo ⏳ 正在备份虚拟机,请稍候...
echo 📋 执行命令: %OVF_TOOL_PATH% --noSSLVerify --acceptAllEulas --powerOffSource %ESXI_URL%/sfc-cgi-bin/sfcgi.cgi?sid=%VM_NAME% "%BACKUP_DIR%\%BACKUP_FILENAME%"
echo.

%OVF_TOOL_PATH% --noSSLVerify --acceptAllEulas --powerOffSource %ESXI_URL%/sfc-cgi-bin/sfcgi.cgi?sid=%VM_NAME% "%BACKUP_DIR%\%BACKUP_FILENAME%"

:: 检查备份结果
if %errorlevel% equ 0 (
    echo ✅ 备份成功完成!
    echo 📁 备份位置: %BACKUP_DIR%\%BACKUP_FILENAME%
    
    :: 显示备份文件信息
    for %%I in ("%BACKUP_DIR%\%BACKUP_FILENAME%") do (
        echo 📊 文件大小: %%~zI bytes
    )
) else (
    echo ❌ 备份失败,错误代码: %errorlevel%
    echo 🔍 请检查以下可能的问题:
    echo   1. ESXi 主机连接是否正常
    echo   2. 虚拟机名称是否正确
    echo   3. 用户名和密码是否正确
    echo   4. 虚拟机是否已关闭
)

echo.
echo ========================================
pause

简化版备份脚本 (quick_backup.bat)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
@echo off
set OVF_TOOL_PATH="C:\Program Files\VMware\VMware OVF Tool\ovftool.exe"
set ESXI_URL="https://192.168.1.100:443"
set ESXI_USERNAME="root"
set ESXI_PASSWORD="your_password"
set VM_NAME="iKuai"
set BACKUP_DIR=%USERPROFILE%\Desktop\ESXi_Backups

if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set CURRENT_DATE=%%a-%%b-%%c

%OVF_TOOL_PATH% --noSSLVerify --acceptAllEulas --powerOffSource %ESXI_URL%/sfc-cgi-bin/sfcgi.cgi?sid=%VM_NAME% "%BACKUP_DIR%\ESXI_%VM_NAME%_%CURRENT_DATE%.ova"

⚙️ 四、脚本配置说明

必须修改的参数:

1
2
3
4
set ESXI_URL="https://192.168.1.100:443"        :: 替换为您的 ESXi 主机 IP 地址
set ESXI_USERNAME="root"                        :: ESXi 登录用户名
set ESXI_PASSWORD="your_password"               :: ESXi 登录密码
set VM_NAME="iKuai"                             :: 要备份的虚拟机名称

可选配置参数:

1
2
set BACKUP_DIR="D:\ESXi_Backups"                :: 更改备份存储位置
set OVF_TOOL_PATH="D:\Tools\VMware OVF Tool\ovftool.exe" :: 自定义 OVF Tool 路径

安全建议:

  1. 🔒 不要硬编码密码:使用以下更安全的方法
  2. 📝 使用环境变量
    1
    2
    
    :: 设置环境变量(在系统属性中配置)
    set ESXI_PASSWORD=%ESXI_BACKUP_PASSWORD%
    
  3. 🔑 使用加密配置文件
    1
    2
    3
    
    :: 创建加密的配置文件
    echo %ESXI_PASSWORD% > config.enc
    cipher /e config.enc
    
  4. 🛡️ 使用最小权限账户:创建专门用于备份的 ESXi 用户账户

🔄 五、恢复虚拟机

1. 基本恢复命令

1
2
3
4
5
:: 恢复虚拟机到 ESXi
"%OVF_TOOL_PATH%" --noSSLVerify --acceptAllEulas --powerOn "%BACKUP_DIR%\%BACKUP_FILENAME%" %ESXI_URL%/

:: 指定虚拟机名称恢复
"%OVF_TOOL_PATH%" --noSSLVerify --name="Restored_%VM_NAME%" "%BACKUP_DIR%\%BACKUP_FILENAME%" %ESXI_URL%/

2. 高级恢复选项

1
2
3
4
5
6
7
8
:: 指定数据存储恢复
"%OVF_TOOL_PATH%" --noSSLVerify --datastore=datastore1 "%BACKUP_DIR%\%BACKUP_FILENAME%" %ESXI_URL%/

:: 指定网络配置恢复
"%OVF_TOOL_PATH%" --noSSLVerify --network="VM Network" "%BACKUP_DIR%\%BACKUP_FILENAME%" %ESXI_URL%/

:: 指定磁盘格式恢复
"%OVF_TOOL_PATH%" --noSSLVerify --diskFormat=thin "%BACKUP_DIR%\%BACKUP_FILENAME%" %ESXI_URL%/

3. 完整恢复脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
chcp 65001 >nul
echo ========================================
echo          ESXi 虚拟机恢复工具
echo ========================================
echo.

set OVF_TOOL_PATH="C:\Program Files\VMware\VMware OVF Tool\ovftool.exe"
set ESXI_URL="https://192.168.1.100:443"
set BACKUP_DIR=%USERPROFILE%\Desktop\ESXi_Backups

echo 📁 可用的备份文件:
dir /b "%BACKUP_DIR%\*.ova"

echo.
set /p BACKUP_FILENAME="请输入要恢复的备份文件名: "
set /p VM_NAME="请输入恢复后的虚拟机名称: "

echo ⏳ 正在恢复虚拟机...
%OVF_TOOL_PATH% --noSSLVerify --acceptAllEulas --name="%VM_NAME%" "%BACKUP_DIR%\%BACKUP_FILENAME%" %ESXI_URL%/

if %errorlevel% equ 0 (
    echo ✅ 恢复成功完成!
) else (
    echo ❌ 恢复失败,错误代码: %errorlevel%
)

pause

4. 恢复验证步骤

  1. 📋 检查恢复结果:在 ESXi Web 界面确认虚拟机已创建
  2. ⚙️ 验证配置:检查 CPU、内存、磁盘等配置是否正确
  3. 🔌 网络测试:启动虚拟机并测试网络连接
  4. 💾 数据完整性:验证重要数据和应用程序状态
  5. 📝 文档更新:更新虚拟机清单和配置文档

📊 六、高级备份选项

1. 多虚拟机备份脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
set OVF_TOOL_PATH="C:\Program Files\VMware\VMware OVF Tool\ovftool.exe"
set ESXI_URL="https://192.168.1.100:443"
set ESXI_USERNAME="root"
set ESXI_PASSWORD="your_password"
set BACKUP_DIR=%USERPROFILE%\Desktop\ESXi_Backups
set VM_LIST="iKuai OpenWRT Windows10 Ubuntu-Server"

if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set CURRENT_DATE=%%a-%%b-%%c

for %%V in (%VM_LIST%) do (
    echo 📋 正在备份虚拟机: %%V
    %OVF_TOOL_PATH% --noSSLVerify --acceptAllEulas --powerOffSource %ESXI_URL%/sfc-cgi-bin/sfcgi.cgi?sid=%%V "%BACKUP_DIR%\ESXI_%%V_%CURRENT_DATE%.ova"
    
    if !errorlevel! equ 0 (
        echo%%V 备份成功
    ) else (
        echo%%V 备份失败
    )
)

echo 📊 备份完成摘要
dir "%BACKUP_DIR%\*%CURRENT_DATE%.ova" /s
pause

2. 增量备份策略

1
2
3
4
5
6
7
8
:: 基于时间戳的增量备份
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set CURRENT_DATE=%%a-%%b-%%c
for /f "tokens=1-2 delims=: " %%a in ('time /t') do set CURRENT_TIME=%%a%%b

set BACKUP_FILENAME=ESXI_%VM_NAME%_%CURRENT_DATE%_%CURRENT_TIME%.ova

:: 只备份当天修改过的虚拟机
%OVF_TOOL_PATH% --noSSLVerify --acceptAllEulas %ESXI_URL%/sfc-cgi-bin/sfcgi.cgi?sid=%VM_NAME% "%BACKUP_DIR%\%BACKUP_FILENAME%"

3. 压缩和加密选项

1
2
3
4
5
:: 启用压缩(减少备份文件大小)
%OVF_TOOL_PATH% --compress=9 %ESXI_URL%/sfc-cgi-bin/sfcgi.cgi?sid=%VM_NAME% "%BACKUP_DIR%\%BACKUP_FILENAME%"

:: 加密备份文件(需要额外工具)
:: 建议使用 7-Zip 或 WinRAR 进行加密压缩

🛠️ 七、常见问题解决

1. SSL 证书错误

1
2
3
4
5
:: 添加跳过 SSL 验证参数
--noSSLVerify

:: 或者导入 ESXi 证书
:: 首先导出 ESXi 证书,然后导入到 Windows 证书存储

2. 认证失败问题

1
2
3
4
5
6
7
8
:: 检查网络连通性
ping 192.168.1.100

:: 验证凭据
:: 尝试使用 ESXi Shell 登录验证用户名密码

:: 检查账户权限
:: 确保备份账户有足够权限

3. 虚拟机状态问题

1
2
3
4
5
6
7
:: 检查虚拟机状态
:: 在 ESXi Web 界面确认虚拟机已关闭

:: 如果虚拟机无法正常关闭,可以尝试强制关闭
--powerOffSource

:: 或者先手动关闭虚拟机再执行备份

4. 存储空间问题

1
2
3
4
5
6
7
8
:: 检查磁盘空间
dir /s "%BACKUP_DIR%"

:: 自动清理旧备份
forfiles /p "%BACKUP_DIR%" /m *.ova /d -30 /c "cmd /c echo Deleting @file && del @file"

:: 使用外部存储
set BACKUP_DIR="F:\Backups\ESXi"

5. 网络连接问题

1
2
3
4
5
6
7
8
:: 检查防火墙设置
:: 确保 443 端口开放

:: 使用 IP 地址而不是主机名
set ESXI_URL="https://192.168.1.100:443"

:: 尝试使用 HTTP(不推荐)
set ESXI_URL="http://192.168.1.100"

🔒 八、备份策略建议

1. 备份频率策略

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 📅 每日备份(关键系统)
- 保留最近 7 天的每日备份
- 每周进行一次完整验证

# 📊 每周备份(重要系统)
- 保留最近 4 周的备份
- 每月进行一次恢复测试

# 🗃️ 每月备份(一般系统)
- 保留最近 12 个月的备份
- 每季度进行一次全面验证

2. 存储策略

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 💾 本地存储
- 快速访问,适合频繁备份
- 风险:单点故障

# 🌐 网络存储
- NAS 或 SAN 存储
- 更好的可靠性和扩展性

# ☁️ 云存储
- AWS S3、Azure Blob Storage 等
- 异地容灾,最高级别的保护

3. 验证策略

1
2
3
4
5
6
7
# ✅ 定期验证备份完整性
- 每月检查备份文件哈希值
- 每季度进行实际恢复测试

# 📝 记录备份日志
- 记录每次备份的时间、大小、状态
- 记录验证和恢复测试结果

💡 九、自动化部署

1. Windows 计划任务

1
2
3
4
5
6
7
8
:: 创建每日备份任务
schtasks /create /tn "ESXi每日备份" /tr "C:\Backup\esxi_backup.bat" /sc daily /st 02:00 /ru SYSTEM

:: 创建每周清理任务
schtasks /create /tn "清理旧备份" /tr "C:\Backup\cleanup.bat" /sc weekly /st 03:00

:: 查看任务列表
schtasks /query /tn "ESXi每日备份"

2. 邮件通知集成

1
2
3
4
5
6
:: 使用 PowerShell 发送邮件通知
powershell -Command "Send-MailMessage -From 'backup@company.com' -To 'admin@company.com' -Subject 'ESXi备份完成' -Body '备份已成功完成' -SmtpServer 'smtp.company.com'"

:: 或者在脚本中添加邮件通知
echo 📧 发送邮件通知...
blat "%BACKUP_DIR%\backup_log.txt" -to "admin@example.com" -subject "ESXi备份状态" -body "备份作业已完成"

3. 日志记录和监控

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
:: 详细的日志记录
echo %DATE% %TIME% - 开始备份 >> "%BACKUP_DIR%\backup_log.txt"
%OVF_TOOL_PATH% ... >> "%BACKUP_DIR%\backup_log.txt" 2>&1
echo %DATE% %TIME% - 备份完成,状态: %errorlevel% >> "%BACKUP_DIR%\backup_log.txt"

:: 监控磁盘空间
for /f "usebackq" %%I in (`dir /s "%BACKUP_DIR%" ^| find "bytes free"`) do (
    if %%I LSS 1073741824 (
        echo ⚠️ 磁盘空间不足: 仅剩 %%I bytes >> "%BACKUP_DIR%\backup_log.txt"
    )
)

⚠️ 十、重要注意事项

1. 安全性注意事项

1
2
3
4
5
6
7
8
9
# 🔒 密码安全
- 不要在脚本中硬编码密码
- 使用环境变量或加密配置文件
- 定期更换备份账户密码

# 🛡️ 备份文件安全
- 加密存储包含敏感数据的备份
- 控制备份文件的访问权限
- 定期审计备份访问日志

2. 操作注意事项

1
2
3
4
5
6
7
8
# ⚠️ 停机时间
- 备份需要关闭虚拟机,安排合适的维护窗口
- 提前通知相关用户和服务

# 📋 文档完整性
- 记录所有备份和恢复操作
- 维护准确的虚拟机清单
- 更新恢复流程文档

3. 技术限制

1
2
3
4
5
6
7
8
9
# 🔧 OVF Tool 限制
- 备份期间虚拟机必须关闭
- 大型虚拟机备份时间较长
- 某些特殊硬件配置可能不支持

# 💾 存储考虑
- 确保目标存储有足够空间
- 考虑网络带宽对备份速度的影响
- 规划备份文件的增长空间

🔧 十一、替代方案

1. 使用 VMware vSphere Client

1
2
3
4
5
6
7
8
# 图形界面备份
- 使用 vSphere Client 手动导出 OVF
- 适合偶尔备份,不适合自动化

# 步骤:
1. 右键点击虚拟机 → 导出 → 导出 OVF 模板
2. 选择目标位置和格式
3. 等待导出完成

2. 使用 ghettoVCB

1
2
3
4
5
6
7
8
9
# 基于脚本的备份方案
- 在 ESXi 主机上直接运行
- 支持增量备份
- 需要 ESXi Shell 访问

# 安装和使用:
wget https://github.com/lamw/ghettoVCB/raw/master/ghettoVCB.sh
chmod +x ghettoVCB.sh
./ghettoVCB.sh -a -g mybackup.conf

3. 使用专业备份工具

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 🏢 企业级解决方案
- Veeam Backup & Replication
- VMware vSphere Data Protection
- Nakivo Backup & Replication

# 💡 优势:
- 增量备份和永久增量
- 应用一致性备份
- 高级压缩和去重
- 集中管理和监控

4. 基于存储的快照

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 📸 存储级快照
- 利用存储阵列的快照功能
- 几乎零停机时间
- 需要兼容的存储硬件

# 典型流程:
1. 创建存储快照
2. 挂载快照到备份服务器
3. 从快照中提取虚拟机数据
4. 卸载快照

💎 总结

通过本指南,您应该能够:

  1. 正确安装和配置 OVF Tool
  2. 创建自动化的备份脚本
  3. 实施有效的备份策略
  4. 处理常见的备份和恢复问题
  5. 选择适合的备份解决方案

建议操作流程:

  1. 🧪 先在测试环境中验证所有配置
  2. 📋 制定详细的备份和恢复计划
  3. 🔄 定期测试恢复流程
  4. 📊 监控备份作业的执行情况
  5. 🔧 根据业务需求调整备份策略

🚨 最后提醒:备份只是手段,能够成功恢复才是目的。请务必定期验证您的备份可用性!

希望这份完整的指南能帮助您建立可靠的 ESXi 虚拟机备份和恢复体系。如有任何问题,建议查阅 VMware 官方文档或社区论坛获取更多帮助。

最后更新于 2025-09-28