ESXi 虚拟主机备份与恢复完全指南 💾 导航目录 📚 📥 一
ESXi 虚拟主机备份与恢复完全指南 💾
导航目录 📚
📥 一、准备工作
官方下载地址:
https://developer.vmware.com/web/tool/ovf-tool/
- 📦 下载文件:
VMware-ovftool-4.3.0-12320924-win.x86_64.msi
- 🔒 建议验证文件哈希值确保完整性
- 🌐 确保下载版本与您的操作系统架构匹配
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. 查看虚拟机信息
- 登录 ESXi Web 管理界面 (通常为 https://您的ESXiIP/ui)
- 导航到"虚拟机"选项卡
- 确认要备份的虚拟机名称(例如:
iKuai
)
- 记录虚拟机的存储位置和配置信息
- 检查虚拟机当前状态
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
|
:: 设置环境变量(在系统属性中配置)
set ESXI_PASSWORD=%ESXI_BACKUP_PASSWORD%
|
- 🔑 使用加密配置文件:
1
2
3
|
:: 创建加密的配置文件
echo %ESXI_PASSWORD% > config.enc
cipher /e config.enc
|
- 🛡️ 使用最小权限账户:创建专门用于备份的 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. 恢复验证步骤
- 📋 检查恢复结果:在 ESXi Web 界面确认虚拟机已创建
- ⚙️ 验证配置:检查 CPU、内存、磁盘等配置是否正确
- 🔌 网络测试:启动虚拟机并测试网络连接
- 💾 数据完整性:验证重要数据和应用程序状态
- 📝 文档更新:更新虚拟机清单和配置文档
📊 六、高级备份选项
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. 卸载快照
|
💎 总结
通过本指南,您应该能够:
- ✅ 正确安装和配置 OVF Tool
- ✅ 创建自动化的备份脚本
- ✅ 实施有效的备份策略
- ✅ 处理常见的备份和恢复问题
- ✅ 选择适合的备份解决方案
建议操作流程:
- 🧪 先在测试环境中验证所有配置
- 📋 制定详细的备份和恢复计划
- 🔄 定期测试恢复流程
- 📊 监控备份作业的执行情况
- 🔧 根据业务需求调整备份策略
🚨 最后提醒:备份只是手段,能够成功恢复才是目的。请务必定期验证您的备份可用性!
希望这份完整的指南能帮助您建立可靠的 ESXi 虚拟机备份和恢复体系。如有任何问题,建议查阅 VMware 官方文档或社区论坛获取更多帮助。