在本文中,我们将了解如何在 Windows Server 上备份网站、应用程序池和 IIS Web 服务器配置。在主机服务器发生故障时,或者将网站(和/或 IIS 配置)迁移/移动到另一台服务器时,您可以使用 Internet Information Services 备份来还原网站。
- 在 Windows Server 上备份 IIS
- 在其他 Windows Server 主机上恢复 IIS 配置
在 Windows Server 上备份 IIS
备份在 Internet Information Service Web 服务器上运行的站点的数据和配置包括几个步骤:
- 备份 IIS 网站文件(默认情况下,IIS 站点文件存储在 中)。此文件夹必须包含在备份计划中。使用备份工具(您甚至可以使用内置的 Windows Server Backup -> 选择要备份的 inetpub 目录)或简单的 BAT/PowerShell 脚本复制文件所有文件就足够了。例如,要安装 WSB 并将 inetpub\wwwroot 目录备份到共享文件夹,请使用以下命令:
%SystemDrive%\inetpub\wwwroot
# Install the Windows server feature using PowerShell;
Install-WindowsFeature -Name Windows-Server-Backup
# backup IIS website static files
wbadmin start backup –backupTarget:\\srv-backup1\backup -include:c:\inetpub\wwwroot -vsscopy - 备份(导出)当前 IIS 证书(您可以使用以下命令获取服务器上的 SSL 证书列表:)您可以使用 PowerShell 将证书备份到 PFX(个人信息交换)格式的共享网络文件夹:
netsh http show sslcert
dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | Foreach-Object { [system.IO.file]::WriteAllBytes("\\srv-backup1\backup\$($_.Subject).pfx",($_.Export('PFX', 'secret')) ) }
- 备份 IIS 配置(设置)。
您可以使用内置的 appcmd 工具备份 IIS 配置。以管理员身份打开命令提示符并更改目录:
cd c:\Windows\system32\inetsrv
让我们备份 IIS 配置:
appcmd add backup srv1-iis-backup-2022_03_10
BACKUP object srv1-iis-backup-2022_03_10 added
Appcmd 在 c:\Windows\system32\inetsrv\backup 目录中创建一个文件夹,其中包含备份的名称。它包含以下文件:
- administration.config 的
- applicationHost.config
- MBSchema.xml
- MetaBase.xml
- 重定向.config
仍需将此目录复制到备份存储设备。
在 Windows Server 2019/2016 上,您可以使用内置的 PowerShell cmdlet 而不是 appcmd 来备份 IIS:
Backup-WebConfiguration -Name MyBackup202203
此 cmdlet 还会将当前的 IIS 设置导出到 。$env:Windir\System32\inetsrv\backup
在其他 Windows Server 主机上恢复 IIS 配置
您可以将 IIS 配置从备份还原到同一服务器或其他主机。假设您需要在不同的 Windows Server 主机上恢复 IIS 配置。
将 IIS 备份目录复制到目标服务器上的同一文件夹 (c:\windows\system32\backup)。
要显示所有可用 IIS 配置备份的列表,请运行以下命令:
appcmd list backup
复制的备份应显示在可用备份列表中。从备份中恢复 IIS 配置:
appcmd restore backup /stop:true srv1-iis-backup-2022_03_10
“从备份 srv1-iis-backup-2022_03_10 还原的配置”表示已成功还原 IIS 配置。
该选项强制 IIS 在还原之前停止。/stop:true
Restore-WebConfiguration -Name srv1-iis-backup-2022_03_10
BACKUP “CFGHISTORY_0000000001”
要删除以前的备份,请运行以下命令:
appcmd.exe delete backup BackupName
- 必须在两台服务器上使用相同的 IIS 版本。您可以使用 PowerShell 在注册表中检查您的 IIS 版本:在本例中,这是 IIS 10.0
get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring,versionstring
- 如果 IIS 应用程序池不是从内置帐户运行的,则它们必须在目标 IIS 主机上可用。
- 在还原 IIS 之前,必须将所使用的任何 SSL 证书导入到新服务器。
您还可以使用 msdeploy 包(Web 部署工具)备份 IIS Web 服务器。在 IIS 主机和目标备份主机 (https://www.microsoft.com/en-us/download/details.aspx?id=43717) 上下载并安装 msdeploy 软件包。
要通过 webdeploy 创建到远程 Windows 主机 192.168.100.112 的 IIS 备份(如果 IIS 上运行多个站点,则包含所有站点),可以使用以下命令:
msdeploy -verb:sync -source:webServer,computername=192.168.100.112 dest:package=c:\Backup\IIS\server1_iis_backup.zip
您还可以备份单个 IIS 网站:
msdeploy –verb:sync -source:contentPath="site_name.com",computername=192.168.100.112 -dest:package=c:\Backup\IIS\site_name.zip
或者仅从指定目录中复制静态网站文件:
msdeploy –verb:sync –source:dirPath="c:\inetpub\wwwroot\site_name",computername=192.168.100.112 -dest:package=c:\Backup\IIS\site_name_static_files.zip