В этой статье мы рассмотрим, как выполнить резервное копирование сайтов, пулов приложений и конфигурации веб сервера IIS в Windows Server. Вы можете использовать резервную копии Internet Information Services для восстановления сайта в случае сбоя веб- сервера, при переносе (миграции) сайтов (и/или конфигурации IIS) на другой сервер.
Резервное копирование IIS в Windows Server
Резервное копирование данных и конфигурации сайтов, запущенных на веб-сервере Internet Information Service состоит из нескольких этапов:
- Резервное копирования файлов сайта (по умолчанию файлы сайтов iss хранятся в
%SystemDrive%\inetpub\wwwroot
). Этот каталог нужно включить в ваш план резервного копирования. Достаточно скопировать файлы все файлы с помощью вашего средства резервного копирования (можно использовать даже встроенный Windows Server Backup -> выберите каталог inetpub для резервного копирования), или простых BAT/PowerShell скриптов. Например, чтобы установить WSB и выполнить резервное копирование каталога inetpub\wwwroot в сетевую папку, используйте следующие команды:
# установите компонент Windows
Install-WindowsFeature -Name Windows-Server-Backup
wbadmin start backup –backupTarget:\\backupshare\backup -include:c:\inetpub\wwwroot -vsscopy - Резервное копирование (экспорт) используемых сертификатов IIS (список SSL сертификатов на сервере можно получить командой:
netsh http show sslcert
) Для резевного копирования сертфикатов в сетевой каталог в формат pfx, можно использовать PowerShell:dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | Foreach-Object { [system.IO.file]::WriteAllBytes("\\backupshare\backup\$($_.Subject).pfx",($_.Export('PFX', 'secret')) ) }
- Резервное копирования конфигурации (настроек) IIS
Рассмотрим, как создать резервную копию конфигурации IIS с помощью встроенной утилиты appcmd. Откройте командную строку с правами администратора и перейдите в каталог:
cd c:\Windows\system32\inetsrv
Создадим резервную копию конфигурации IIS:
appcmd add backup srv1-iis-backup-20220316
BACKUP object "srv1-iis-backup-20220316" added
Appcmd создает в каталоге c:\Windows\system32\inetsrv\backup папку с именем вашей резервной копии. В ней содержатся следующие файлы:
- administration.config
- applicationHost.config
- MBSchema.xml
- MetaBase.xml
- redirection.config
Осталось скопировать этот каталог на устройство хранения резервных копий.
В Windows Server 2019/2016 вместо appcmd вы можете использовать встроенный командлет PowerShell для создания резервной копии IIS:
Backup-WebConfiguration -Name MyBackup202203
Этот командлет также экспортирует текущие настройки IIS в
$env:Windir\System32\inetsrv\backup
.
Восстановление конфигурации IIS на другом сервере
Вы можете восстановить вашу резервную копию конфигурации IIS на этом же или на другом сервере. Рассмотрим сценарий, что вам нужно восстановить конфигурации IIS из резервной копии на другом сервере.
Скопируйте каталог с резервной копией IIS в ту же папку c:\windows\system32\backup на втором сервере:
Чтобы вывести список всех доступных резервных копий конфигурации IIS, выполните команду:
appcmd list backup
Скопированный бэкап должен появился в списке доступных. Выполните восстановление IIS из резервной копии:
appcmd restore backup /stop:true srv1-iis-backup-20220316
Строка Restored configuration from backup srv1-iis-backup-20220316 говорит о том, что конфигурация IIS успешно восстановлена.
Параметр
/stop:true
принудительно останавливает IIS перед восстановлением.
По аналогии вы можете восстановить конфигурацию IIS с помощью PowerShell:
Restore-WebConfiguration -Name srv1-iis-backup-20220316
Чтобы удалить резервную копию, выполните:
appcmd.exe delete backup BackupName
- На обоих серверах должна использоваться одна и та же версия IIS. Версию IIS в Windows можно получить из реестра с помощью команды PowerShell:
get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring,versionstring
В моем случае это IIS 10.0 - Если любой пул приложений, запущен не из-под встроенных учетных записей, они должны быть доступны и на втором сервере;
- Перед восстановлением нужно экспортировать и перенести на новый сервер все используемые сертификаты.
Также вы можете использовать резервное копирование с помощью пакета msdeploy (https://www.microsoft.com/en-us/download/details.aspx?id=43717). Пакет Web Deployment Tool нужно установить на локальный и удаленный компьютер.
Для создания резервной копии IIS (со всеми сайтами, если на IIS запущено несколько сайтов) на удаленный компьютер
192.168.0.12
через webdeploy, можно использоваться такую команду:
msdeploy -verb:sync -source:webServer,computername=192.168.0.12 dest:package=c:\IISBackups\iis_backup.zip
Также можно создать резервную копию отдельного сайта:
msdeploy –verb:sync -source:contentPath="site.com",computername=192.168.0.12 -dest:package=c:\IISBackups\site_com_backup.zip
Или скопировать только статические файлы из указанного каталога:
msdeploy –verb:sync –source:dirPath="c:\inetput\websites\sitename",computername=192.168.0.12 -dest:package=c:\IISBackups\sitename_staticfiles.zip