IIS: резервное копирование и восстановление сайтов и конфигурации

В этой статье мы рассмотрим, как выполнить резервное копирование сайтов, пулов приложений и конфигурации веб сервера IIS в Windows Server. Вы можете использовать резервную копии Internet Information Services для восстановления сайта в случае сбоя веб- сервера, при переносе (миграции) сайтов (и/или конфигурации IIS) на другой сервер.

Резервное копирование IIS в Windows Server

Резервное копирование данных и конфигурации сайтов, запущенных на веб-сервере Internet Information Service состоит из нескольких этапов:

  1. Резервное копирования файлов сайта (по умолчанию файлы сайтов iss хранятся в %SystemDrive%inetpubwwwroot ). Этот каталог нужно включить в ваш план резервного копирования. Достаточно скопировать файлы все файлы с помощью вашего средства резервного копирования (можно использовать даже встроенный Windows Server Backup -> выберите каталог inetpub для резервного копирования), или простых BAT/PowerShell скриптов. Например, чтобы установить WSB и выполнить резервное копирование каталога inetpubwwwroot в сетевую папку, используйте следующие команды:
    # установите компонент Windows
    Install-WindowsFeature -Name Windows-Server-Backup
    wbadmin start backup –backupTarget:\backupsharebackup -include:c:inetpubwwwroot -vsscopy
  2. Резервное копирование (экспорт) используемых сертификатов IIS (список SSL сертификатов на сервере можно получить командой: netsh http show sslcert ) Для резевного копирования сертфикатов в сетевой каталог в формат pfx, можно использовать PowerShell: dir cert:localmachinemy | Where-Object { $_.hasPrivateKey } | Foreach-Object { [system.IO.file]::WriteAllBytes("\backupsharebackup$($_.Subject).pfx",($_.Export('PFX', 'secret')) ) } бэкап установленный сертификатов IIS
  3. Резервное копирования конфигурации (настроек) IIS

Рассмотрим, как создать резервную копию конфигурации IIS с помощью встроенной утилиты appcmd . Откройте командную строку с правами администратора и перейдите в каталог:

cd c:Windowssystem32inetsrv

Создадим резервную копию конфигурации IIS:
appcmd add backup srv1-iis-backup-20220316

BACKUP object "srv1-iis-backup-20220316" added

appcmd утилита для резевного копирования IIS конфигурации

Appcmd создает в каталоге c:Windowssystem32inetsrvbackup папку с именем вашей резервной копии. В ней содержатся следующие файлы:

  • administration.config
  • applicationHost.config
  • MBSchema.xml
  • MetaBase.xml
  • redirection.config

резевная копия настроек Internet Information Services в Windows Server

Осталось скопировать этот каталог на устройство хранения резервных копий.

В Windows Server 2019/2016 вместо appcmd вы можете использовать встроенный командлет PowerShell для создания резервной копии IIS:

Backup-WebConfiguration -Name MyBackup202203

Этот командлет также экспортирует текущие настройки IIS в $env:WindirSystem32inetsrvbackup .

Восстановление конфигурации IIS на другом сервере

Вы можете восстановить вашу резервную копию конфигурации IIS на этом же или на другом сервере. Рассмотрим сценарий, что вам нужно восстановить конфигурации IIS из резервной копии на другом сервере.

Скопируйте каталог с резервной копией IIS в ту же папку c:windowssystem32backup на втором сервере:

Чтобы вывести список всех доступных резервных копий конфигурации IIS, выполните команду:

appcmd list backup

Скопированный бэкап должен появился в списке доступных. Выполните восстановление IIS из резервной копии:

appcmd restore backup /stop:true srv1-iis-backup-20220316

восстановление конфигурации IIS Строка Restored configuration from backup srv1-iis-backup-20220316 говорит о том, что конфигурация IIS успешно восстановлена.

Параметр /stop:true принудительно останавливает IIS перед восстановлением.

По аналогии вы можете восстановить конфигурацию IIS с помощью PowerShell:

Restore-WebConfiguration -Name srv1-iis-backup-20220316

Примечание . В списке доступных резервных копий присутствуют записи вида BACKUP “CFGHISTORY_0000000001″. Это автоматически созданные резервные копии конфигурации IIS, хранящиеся в каталоге inetpubhistory. Функция автоматического копирования работает в IIS начиная с версии IIS 7: отслеживаются изменения в ApplicationHost.config внесенные через IIS Manager, хранятся 10 последних версий, файл проверяется на изменение каждые 2 минуты.

Чтобы удалить резервную копию, выполните:

appcmd.exe delete backup BackupName

Примечание . Список важных ограничений и ключевых моментов.

  • На обоих серверах должна использоваться одна и та же версия IIS. Версию IIS в Windows можно получить из реестра с помощью команды PowerShell : get-itemproperty HKLM:SOFTWAREMicrosoftInetStp | select setupstring,versionstring В моем случае это IIS 10.0 узнать версию IIS сервера
  • Если любой пул приложений, запущен не из-под встроенных учетных записей, они должны быть доступны и на втором сервере;
  • Перед восстановлением нужно экспортировать и перенести на новый сервер все используемые сертификаты.

Также вы можете использовать резервное копирование с помощью пакета 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:IISBackupsiis_backup.zip

Также можно создать резервную копию отдельного сайта:

msdeploy –verb:sync -source:contentPath="site.com",computername=192.168.0.12 -dest:package=c:IISBackupssite_com_backup.zip

Или скопировать только статические файлы из указанного каталога:

msdeploy –verb:sync –source:dirPath="c:inetputwebsitessitename",computername=192.168.0.12 -dest:package=c:IISBackupssitename_staticfiles.zip

EnglishRussianUkrainian