IIS 备份与恢复

IIS · 第 9 篇 · 适用于 Windows Server 2019 / 2022 / 2025

📑 目录

  1. IIS 配置备份
  2. 网站内容备份
  3. 恢复操作
  4. 常见问题

1. IIS 配置备份

IIS 配置存储在 applicationHost.config 文件中,包含站点绑定、应用程序池、模块等全局设置。定期备份配置是运维的基本要求。

💡 配置文件位置

%SystemRoot%\System32\inetsrv\config\applicationHost.config

使用 AppCmd 备份

PowerShell - 配置备份
# 进入 IIS 目录
cd $env:SystemRoot\System32\inetsrv

# 创建配置备份(自动命名)
./appcmd.exe add backup

# 创建命名备份
./appcmd.exe add backup "BeforeUpgrade_20260514"

# 查看所有备份
./appcmd.exe list backup

# 备份存储位置
Get-ChildItem "C:\Windows\System32\inetsrv\backup"

2. 网站内容备份

PowerShell - 内容备份脚本
# 定义变量
$WebRoot = "D:\Websites"
$BackupPath = "E:\IIS_Backup\$(Get-Date -Format 'yyyyMMdd')"

# 创建备份目录
New-Item -ItemType Directory -Path $BackupPath -Force

# 复制网站文件
Copy-Item -Path $WebRoot -Destination $BackupPath -Recurse

# 备份 IIS 配置
Copy-Item -Path "$env:SystemRoot\System32\inetsrv\config\*" `
    -Destination "$BackupPath\config" -Recurse

# 压缩备份
Compress-Archive -Path $BackupPath `
    -DestinationPath "E:\IIS_Backup\IIS_Backup_$(Get-Date -Format 'yyyyMMdd_HHmm').zip"

Write-Host "Backup completed: $BackupPath"

3. 恢复操作

PowerShell - 恢复 IIS 配置
# 进入 IIS 目录
cd $env:SystemRoot\System32\inetsrv

# 列出可用备份
./appcmd.exe list backup

# 恢复到指定备份
./appcmd.exe restore backup "BeforeUpgrade_20260514"

# 重启 IIS 服务
Restart-Service W3SVC -Force

# 验证恢复
Get-Website | Select-Object Name, State
PowerShell - 恢复网站内容
# 解压备份文件
Expand-Archive -Path "E:\IIS_Backup\IIS_Backup_20260514.zip" `
    -DestinationPath "E:\IIS_Backup\Temp" -Force

# 停止网站
Stop-Website -Name "MyWebSite"

# 恢复文件(覆盖现有)
Copy-Item -Path "E:\IIS_Backup\Temp\Websites\*" `
    -Destination "D:\Websites" -Recurse -Force

# 启动网站
Start-Website -Name "MyWebSite"

Write-Host "Content restore completed"

4. 常见问题

Q1:备份恢复后网站无法启动

检查应用程序池是否正确恢复,以及物理路径是否存在。使用 Get-Website | Select-Object * 检查网站配置。

Q2:如何设置自动备份

使用 Windows 任务计划程序,创建 PowerShell 脚本定时执行备份任务。建议每日凌晨自动备份配置和内容。

Q3:跨服务器迁移 IIS

使用 Web Deploy 工具可完整迁移站点、配置、数据库和证书。命令:msdeploy -verb:sync -source:webServer -dest:webServer,computername=target-server