서버를 운영하는 환경에서 데이터의 백업과 복원의 중요성에 대해서는 모두가 잘 알고 있는 사실입니다. IIS 7 또한 외부의 공격이나 서버 장애 등의 다양한 위험 요소로부터 만약의 재해 상황을 대비해서 백업은 반드시 필요합니다. 뿐만 아니라 웹 서버 이전이 필요한 경우에도 이와 같은 백업과 복원을 통해 작업을 수행할 수 있습니다.
웹 서버 백업 정책을 고려하기 위해서 우선 백업 범위에 대해서 생각해 봐야 합니다. 단순하게 ‘IIS 7 설정 데이터만 백업하면 되겠지?’ 라고 생각할 수 있습니다만 일반적으로 아래와 같은 항목들에 대해서 백업을 검토해야 합니다.
1. 웹 사이트 데이터
웹 사이트 소스 코드와 모듈 데이터(HTML, ASP.NET, DLL 파일 등)
2. 트랜잭션 데이터
웹 사이트에서 사용되는 트랜잭션 데이터로 파일 또는 DBMS 정보
3. IIS 7 설정 정보
호스팅 하고 있는 어플리케이션들을 위한 커스터마이징 된 서비스들에 대한 정보로써 웹 사이트, 응용 프로그램 풀, IIS 서비스 설정 정보 (.config 파일 등)
4. 운영체제 및 종속된 서비스
호스팅 환경의 어플리케이션을 위한 설정 파일 또는 Supporting 파일 (리소스 킷 툴, 모니터링 에이전트, 정책 등)
이번 포스팅에서는 IIS 7 에서 제공하는 백업을 소개하기 앞서 Windows Server 플랫폼의 전반적인 백업과 복원 방법에 대해서 소개해 드립니다. Windows Server 의 백업과 복원을 위해 다양한 3rd party 제품들도 있습니다만 Windows Server 2008 에서 기능으로 제공하는 Windows Server Backup 기능에 대해서 아래와 같이 정리하였습니다.
[Windows Server Backup 기능]
Windows Server Backup 기능은 이전 버전의 ntbackup.exe 에서 대체된 새로운 모듈이며 GUI, 커맨드 라인 명령을 모두 지원하는 도구를 포함하고 있습니다. Windows Server 백업을 사용하여 전체 서버(모든 볼륨), 선택한 볼륨, 시스템 상태 또는 특정 파일이나 폴더를 백업하고 완전 복구에 사용할 수 있는 백업을 만들 수 있습니다. 볼륨, 폴더, 파일, 특정 응용 프로그램 및 시스템 상태를 복구할 수 있습니다. 또한 하드 디스크 오류와 같은 재해가 발생한 경우 완전 복구를 수행할 수 있습니다. Windows Server 백업을 사용하여 로컬 컴퓨터 또는 원격 컴퓨터에 대한 백업을 만들고 관리할 수 있으며, 백업이 자동으로 실행되도록 예약할 수도 있습니다.
다음은 Windows Server 백업 기능을 설치하고 파일 백업 및 복구 과정에 대해서 아래와 같이 간략히 정리하였습니다.
1. 설치
가. 서버관리자 – 기능 – 기능 추가 – Windows Server 백업 기능 (Windows Server 백업, 명령줄 도구 모두 선택)
나. 위와 같이 백업 기능 설치 시, MMC(Microsoft Management Console) 스냅인, 명령줄 도구, Windows Powershell 스냅인 및 cmdlet 모듈이 설치됩니다.

2. 특정 파일 백업
가. 시작 – 모든 프로그램 – 관리도구 – Windows Server 백업
나. 동작 – 한 번 백업

다. 다른 옵션

라. 사용자 지정

마. 항목 추가

바. C:InetPub 선택

사. 로컬 드라이브

아. 백업 용도의 E 드라이브 선택 
자. 백업 
차. 백업 진행 상태 확인 
카. 정상적으로 백업을 완료하였음을 확인할 수 있습니다.

3. 복구 테스트를 위한 샘플 파일 삭제
가. C:inetpubwwwroot 시작 페이지 파일 삭제

4. 복구
가. 동작 – 복구

나. 이 서버 선택

다. 기존 백업 세트 중에서 복구에 사용할 백업 날짜 선택

라. 파일 및 폴더

마. Wwwroot 폴더 선택

바. 복구 옵션 지정
1) 원래 위치
2) 기존 버전을 복구된 버전으로 덮어쓰기
3) ACL 권한을 복구되고 있는 파일 또는 폴더로 복원

사. 복구 대상 확인

아. 복구 완료

자. 파일 복구 성공

차. 확인 – 파일이 모두 정상적으로 복원되었습니다.

일반적인 파일 단위 백업 뿐만 아니라 서버 전체 백업, 시스템 파일, 부팅 파일, 레지스트리, 볼륨 단위 백업도 가능하며 예약 작업을 통해 정기적인 백업 수행이 가능하다는 것을 확인하였습니다. GUI 가 아닌 명령줄(Command Line) 툴 wbadmin.exe 파일을 통해서도 이러한 백업과 복원이 가능하며 보다 자세한 Windows Server 백업의 기능에 대해서는 아래 TechNet 문서를 참조하시기 바랍니다. http://technet.microsoft.com/ko-kr/library/ee344835(WS.10).aspx
Windows Server 백업 기능을 사용해서 운영체제와 파일 백업에 대한 소개에 이어 이번 포스티엥서는 IIS 7 설정을 백업하고 복원하는 방법에 대해서 살펴 보도록 하겠습니다.
Chapter 5에서 appcmd.exe 커맨드라인 도구를 소개할 때, 간략히 백업과 복원 명령어를 소개하였습니다만 커맨드라인 명령 뿐만 아니라 IIS 7 인터넷 정보 관리자 인터페이스를 통해서 쉽게 IIS 7 설정을 백업하고 복원할 수도 있습니다. 두 가지 방법 예제를 통해 살펴보겠습니다. 개인적으로는 검증된(?) 그리고 활용도가 높은 appcmd.exe 명령 사용을 추천해 드립니다.
1. appcmd.exe 명령으로 IIS 7 설정 백업과 복원하기
가. 바이너리 위치 및 도움말 정보 보기 : %WindDir%System32InetSrvappcmd.exe /?
나. 백업하기
1) C:WindowsSystem32intersrv> appcmd add backup
2) 백업 파일 이름을 지정해 주지 않으면 현재 타임스탬프 이름으로 백업됩니다.
다. 백업 목록 확인
1) appcmd list backup
2) 이미 존재하는 BACKUP “CFGHISTORY_Serialnumber” 형태로 기록된 정보는 매 2분마다 IIS 7 구성 정보 변경 여부를 체크하여 변경 사항이 있을 때마다 자동으로 백업이 수행된 기록입니다. %SystemDrive%InetPubhistory 폴더에서 백업된 정보를 확인하실 수 있습니다.

라. 백업 정보 삭제
1) appcmd delete backup 20110107T102003

마. 백업 및 복원 시나리오
1) “laigo” 라는 백업 이름으로 백업을 수행합니다.
appcmd add backup laigo
2) “laigo” 백업 세트를 사용하여 즉시 복원하고 IIS 서비스를 재시작 합니다.
appcmd restore backup /backup.name:”laigo”
3) 복원 시 IIS 서비스 재시작을 원치 않는다면 /stop:false 파라미터를 사용하시면 됩니다. 물론 수동으로 재시작해야 변경 사항이 적용됩니다.
appcmd restore backup /backup.name:”laigo” /stop:false

2. IIS 7 백업 복원 사용자 인터페이스
가. 다운로드 (IIS7 Backup Restore UI)
http://www.iis.net/community/default.aspx?tabid=34&g=6&i=1552
나. 다운로드 받은 파일의 압축을 해제한 후 IIS7BackupRestoreUI.dll 파일을 글로벌 어셈블리 캐쉬(C:Windowsassembly 폴더로 Drag & Drop 하면 자동으로 설치됩니다.

다. 메모장 실행 후 %WinDir%System32InetSrvconfigAdministration.config 파일을 열어 <moduleProviders> 이름으로 검색한 후 해당 섹션 아래에 다음 내용을 추가합니다.
<add name=”IIS7BackupRestoreUI” type=”IIS7BackupRestoreUI.MyModuleProvider, IIS7BackupRestoreUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=db9daa3d2ea5f6fd” />
다시 한 번, <modules> 이름으로 검색한 후 해당 섹션 아래 아래 내용도 추가합니다.
<add name=”IIS7BackupRestoreUI” />
수정된 파일을 저장합니다.
라. 인터넷 정보 관리자를 실행하면 아래 그림과 같이 Backup Restore 메뉴가 추가된 것을 확인할 수 있으며 IIS7BackupRestoreUI 기능이 아이콘으로 추가 되었음을 확인할 수 있습니다.

마. 신규 백업을 생성하기 위해서는 Backup Name 에 백업세트 이름을 입력한 뒤 ‘Create’ 버튼을 클릭하시면 됩니다. 필요시, Web.config 파일도 백업 여부를 선택할 수 있습니다. 백업 시 성공하면 성공되었다는 팝업창이 나타나게 됩니다. 백업이 완료된 이후 appcmd list backup 명령으로도 백업 세트를 확인하실 수 있습니다.

바. 이후 복원을 하기 위해서는 Available Backups 항목에 있는 드롭다운 리스트 박스 버튼을 클릭하면 현재 백업 되어 있는 목록들을 보여주게 되며 선택하여 복원할 수 있습니다. 복원 시, 아래에 있는 Log 메시지 창을 통해 복원 결과를 확인하실 수 있습니다.

IIS 7 백업 복원 사용자 인터페이스를 사용하실 때, 몇 가지 주의하실 사항이 있습니다. 우선 복원 시, 자동으로 IIS 서비스가 재시작 된다는 것과 반드시 백업 후에는 복원 테스트를 통해 권한이나 그 외 예외가 발생하지 않는지 테스트가 필요합니다. 제가 테스트한 일부 환경에서는 복원 실패 사례가 있었으나 아직 많은 테스트를 진행하지 못해 구체적인 정보를 전해 드리기 어렵습니다. 개인적으로는 appcmd.exe 명령을 사용하여 백업, 복원을 관리하는 것을 권장해 드리고 싶습니다.
컨텐츠 또는 데이터베이스 백업은 신경 쓰면서 운영체제와 웹 서비스의 설정 정보의 백업은 소홀하진 않으셨는지요? 보신바와같이정말 간단하게 APPCMD 명령 한 줄이면 현재 IIS 웹 서버의 구성 정보를 안전하게 백업 받을 수 있습니다. 명령어사용을아끼지 말고 작업전, 작업후항상백업자료관리신경써주시면정신건강에아주이로울거라확신합니다.