Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows Server에서 웹사이트와 IIS 구성을 백업 및 복원하는 방법

이 글에서는 Windows Server에서 실행 중인 웹사이트, 애플리케이션 풀, 그리고 IIS 웹 서버 구성을 백업하는 방법을 살펴봅니다. IIS 백업은 호스트 서버에 장애가 발생했을 때 웹사이트를 복구하거나, 웹사이트(IIS 구성 포함)를 다른 서버로 마이그레이션할 때 매우 유용하게 활용됩니다.

Windows Server에서 IIS 백업하기

IIS 웹 서버에서 운영 중인 사이트의 데이터와 구성을 백업하려면 크게 세 가지 단계를 거쳐야 합니다.

1. IIS 웹사이트 파일 백업

기본적으로 IIS 사이트 파일은 %SystemDrive%\inetpub\wwwroot에 저장됩니다. 따라서 이 폴더는 반드시 백업 계획에 포함해야 합니다. 백업 도구로 전체 파일을 복사하거나, Windows Server에 기본 탑재된 Windows Server Backup을 사용해 inetpub 디렉터리를 지정해 백업할 수 있으며, 간단한 BAT/PowerShell 스크립트를 작성하는 방법도 있습니다.

예를 들어 WSB 기능을 설치한 뒤 inetpub\wwwroot 디렉터리를 공유 폴더에 백업하려면 다음 명령어를 사용합니다:

# PowerShell로 Windows Server 백업 기능 설치
Install-WindowsFeature -Name Windows-Server-Backup
# IIS 웹사이트 정적 파일 백업
wbadmin start backup –backupTarget:\\srv-backup1\backup -include:c:\inetpub\wwwroot -vsscopy

2. SSL 인증서 백업(내보내기)

서버에 설치된 SSL 인증서 목록은 다음 명령으로 확인할 수 있습니다:

netsh http show sslcert

PowerShell을 활용하면 개인 키가 있는 인증서를 PFX(Personal Information Exchange) 형식으로 네트워크 공유 폴더에 백업할 수 있습니다:

dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | Foreach-Object { [system.IO.file]::WriteAllBytes("\\srv-backup1\backup\$($_.Subject).pfx",($_.Export('PFX', 'secret')) ) }
Windows Server에서 웹사이트와 IIS 구성을 백업 및 복원하는 방법

3. IIS 구성(설정) 백업

IIS 구성은 내장 도구인 appcmd를 사용해 손쉽게 백업할 수 있습니다. 관리자 권한으로 명령 프롬프트를 연 후 아래 디렉터리로 이동합니다:

cd c:\Windows\system32\inetsrv

이제 IIS 구성을 백업합니다:

appcmd add backup srv1-iis-backup-2022_03_10
BACKUP object srv1-iis-backup-2022_03_10 added
Windows Server에서 웹사이트와 IIS 구성을 백업 및 복원하는 방법

appcmd는 c:\Windows\system32\inetsrv\backup 경로에 백업 이름과 동일한 폴더를 생성하며, 이 폴더에는 다음 파일들이 포함됩니다:

  • administration.config
  • applicationHost.config
  • MBSchema.xml
  • MetaBase.xml
  • redirection.config
Windows Server에서 웹사이트와 IIS 구성을 백업 및 복원하는 방법

마지막으로 이 폴더를 백업 저장소로 복사하면 됩니다.

Windows Server 2019/2016 환경에서는 appcmd 대신 내장된 PowerShell cmdlet을 사용할 수도 있습니다:

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

복사한 백업이 목록에 나타나면 아래 명령으로 복원을 진행합니다:

appcmd restore backup /stop:true srv1-iis-backup-2022_03_10
Windows Server에서 웹사이트와 IIS 구성을 백업 및 복원하는 방법

"Restored configuration from backup srv1-iis-backup-2022_03_10"이라는 메시지가 표시되면 IIS 구성이 성공적으로 복원된 것입니다. /stop:true 옵션은 복원 작업 전에 IIS 서비스를 강제로 중지시키는 역할을 합니다.

PowerShell cmdlet을 사용하는 방법은 다음과 같습니다:

Restore-WebConfiguration -Name srv1-iis-backup-2022_03_10

참고: 백업 목록에는 BACKUP "CFGHISTORY_0000000001"과 같은 항목이 함께 표시될 수 있습니다. 이는 IIS가 자동으로 생성하는 구성 백업으로 \inetpub\history 디렉터리에 저장됩니다. IIS 7부터 자동 백업 기능이 도입되어, IIS 관리자를 통해 ApplicationHost.config에 가해진 변경 사항이 추적되며 최근 10개의 백업이 보관되고 2분마다 파일 변경 여부가 확인됩니다.

이전 백업을 삭제하려면 다음 명령을 사용합니다:

appcmd.exe delete backup BackupName

주요 제약 사항 및 유의점:

  • 두 서버 모두 동일한 IIS 버전을 사용해야 합니다. PowerShell로 레지스트리에서 IIS 버전을 확인할 수 있습니다: get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring,versionstring (예: IIS 10.0)
  • 애플리케이션 풀이 기본 제공 계정이 아닌 별도 계정으로 실행된다면, 해당 계정이 대상 IIS 호스트에 반드시 존재해야 합니다.
  • IIS 복원 전에 사용 중인 SSL 인증서를 새 서버에 먼저 가져와야(import) 합니다.
Windows Server에서 웹사이트와 IIS 구성을 백업 및 복원하는 방법

msdeploy(Web Deployment Tool)를 활용한 IIS 백업

msdeploy 패키지(Web Deployment Tool)를 사용해서도 IIS 웹 서버를 백업할 수 있습니다. IIS 호스트와 백업 대상 호스트 양쪽에 msdeploy 패키지를 다운로드하여 설치합니다.

여러 사이트가 실행 중인 IIS 서버 전체를 원격 Windows 호스트 192.168.100.112로부터 webdeploy를 통해 백업하려면 다음 명령을 사용합니다:

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