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