Microsoft MVP성태의 닷넷 이야기
Windows: 80. 윈도우 서버 백업의 복원하는 옵션 설명 [링크 복사], [링크+제목 복사],
조회: 23735
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

윈도우 서버 백업의 복원하는 옵션 설명

그동안 윈도우 서버의 백업만 해오다가 지난번 사태로 인해 처음으로 (시스템) 복원을 시도해봤습니다. ^^;

Hyper-V 서비스 시작 오류 - Not enough storage is available to complete this operation.
; https://www.sysnet.pe.kr/2/0/1568

"Windows Server Backup" MMC 도구를 실행하면 "Recovery..." 옵션을 선택해 복원을 진행할 수 있는데요. 이때 Recovery 마법사는 다음과 같이 백업이 저장된 위치를 먼저 물어봅니다.

recover_backup_1.png

제 경우에는 같은 컴퓨터에 HDD 하나를 백업 전용으로 달아 두었기 때문에 첫 번째 옵션을 선택해 진행했습니다. 참고로, 같은 머신일지라도 운영체제가 새로 설치되어 이전 운영체제의 백업본을 접근하는 경우라면 "This server(...)"에 해당하지 않습니다. 그런 경우에는 "A backup stored on another location"을 선택한 후에 현재 PC의 하드를 지정해야 합니다. 안 그러면 vhdx 백업본을 Raw 상태의 HDD로 인식하는 경우가 있어 그다음 단계에서 날짜를 선택할 때 아래의 오류 메시지가 뜨면서 진행되지 않습니다.

The disk New Volume (...) that contains the backup is either not online or is not accessible. Make sure this disk is connected to the computer and is accessible for the recovery to continue. Otherwise, choose a recovery date for which the disk is online and accessible, or choose a backup from another storage location.


정상적으로 진행하면 백업본이 생성된 날짜를 선택할 수 있고, (굵은 글씨체로 보이는 숫자입니다.)

recover_backup_2.png

해당 백업본을 대상으로 다음과 같이 5개의 옵션으로 복원을 할 수 있습니다.

recover_backup_3.png

  1. Files and folders: 말 그대로 파일 및 폴더를 복원하는 것으로 복원해야 할 대상이 명확할 때 사용하면 됩니다.
  2. Hyper-V: 아마도 서비스 정지로 인해 비활성화된 듯 싶고.
  3. Volumes: 백업에 저장된 "System Reserved" 및 특정 드라이브에 저장된 모든 데이터를 기존의 내용을 덮어쓰는 형식이 아닌, 운영체제가 설치되지 않은 일반 드라이브를 대상으로 풀어냅니다. 즉, 하드 디스크 볼륨 단위의 원복이 아닙니다.
  4. Applications: 현재 공식적으로 지원되는 것은 "Registry" 하나에 불과하므로 거의 쓸일이 없습니다. 게다가 "Volumes" 옵션과 마찬가지로 기존 설정에 덮어쓰는 형식이 아니고 새롭게 파일로 쓰는 형식입니다.
  5. System state: 기존 파일을 덮어쓰는 형식이긴 하지만 보안 접근이 불가능한 파일은 복원하지 못하고 실패합니다. 또는 "Volumes" 옵션처럼 기존 설정을 덮어쓰지 않고 특정 폴더에 풀어내는 것이 가능합니다.

이 중에서 운영체제의 구성 요소가 잘못되어 복원을 하는 경우라면 "System state" 옵션을 선택해야 하는데요. 아쉽게도 위에서 설명한 이유로 인해 대개의 경우 복원이 실패합니다. 왜냐하면 운영체제가 실행 중이기 때문에 복원이 불가능한 것입니다. (사실 운영체제가 실행된 상태에서의 "System state" 옵션은 거의 의미가 없습니다.) 대신 윈도우 설치 디스크를 이용해 부팅을 시키면 그제서야 제대로 된 "System state" 복원이 가능합니다. 이에 대해서는 다음의 글을 참고하세요.

Windows Recovery Environment overview
; https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd979562(v=ws.10)




"Files and folders" 복원 옵션을 선택한 경우 원본 위치로 쓰거나 별도의 폴더를 지정하는 것도 가능합니다. 그리고 원본 위치일지라도 다음과 같이 3개의 옵션을 선택할 수 있습니다.

recover_backup_4.png

  1. Create copies so that you have both versions: 예를 들어, "c:\temp\test.txt"라는 파일이 이미 있는 경우, 복원되는 파일을 해당 파일에 덮어쓰지 않고 "c:\temp\2014-01-05 13-49 Copy of test.txt"라는 식의 이름으로 새롭게 중복해서 복원합니다.
  2. Overwrite the existing versions with the recovered versions: 복원본에 있는 내용으로 기존 파일을 덮어씁니다.
  3. Do not recover the items that already exist on the recovery destination: 현재 존재하지 않는 파일에 대해서만 복원본으로부터 파일을 가져옵니다.

여기서 디스크 드라이브를 대상으로 "Create copies so that you have both versions" 옵션을 선택해 복원하게 되면 2배 가량의 디스크 공간이 점유될 것입니다. 물론, 복원하다가 용량이 부족하면 실패하고 거기서 작업은 멈춥니다. 참고로 "Security settings"의 "Restore access control list (ACL) permissions to the file or folder being recovered" 옵션을 주의해야 할 필요가 있습니다. 이 옵션은 기본 선택되어 있는데, 복원되는 ".... Copy of ..." 파일들의 보안도 원본 파일을 그대로 따라가게 되므로 "C:\Program Files"와 같은 식의 폴더/파일인 경우 "TrustedInstaller" 보안이 적용된다는 문제가 발생합니다.

그래도 당황하지 마시고 다음의 명령어로 일괄 삭제(또는 보안 변경)할 수 있으니 참고하세요. ^^ (그렇습니다. 제가 실수로 그 옵션을 선택해 시스템 드라이브 전체를 복원하려 했습니다.)

cd "C:\Windows"

takeown /f "2014-01-05 13-49 Copy of*" /skipsl /r /a /d n
takeown /f "2014-01-05 13-49 Copy of*" /skipsl /r /a /d y

icacls "2014-01-05 13-49 Copy of*"  /grant "Users":F /T /C

del "2014-01-05 13-49 Copy of*" /S
del /AH "2014-01-05 13-49 Copy of*" /S
del /AR "2014-01-05 13-49 Copy of*" /S
del /AA "2014-01-05 13-49 Copy of*" /S

dir /a/s "2014-01-05 13-49 Copy of*"




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/17/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 106  107  108  109  110  111  112  113  114  115  [116]  117  118  119  120  ...
NoWriterDateCnt.TitleFile(s)
11057정성태10/8/201618465오류 유형: 358. Windows 10 bash shell - sudo: unable to resolve host ...
11056정성태10/8/201622253개발 환경 구성: 302. Windows 10 bash shell 시작 시 [...] packages can be updated.
11055정성태10/8/201623290.NET Framework: 608. double 값을 구할 때는 반드시 피연산자를 double로 형변환! [6]
11054정성태10/5/201627296개발 환경 구성: 301. "Let's Encrypt" SSL 인증서를 Azure Cloud Services(classic)에 업데이트하는 방법
11053정성태10/5/201621967.NET Framework: 607. C# try/catch/finally의 IL 코드 표현
11052정성태9/27/201635904개발 환경 구성: 300. C# DLL에서 Win32 C/C++처럼 dllexport 함수를 제공하는 방법 [7]파일 다운로드1
11051정성태9/25/201623043개발 환경 구성: 299. docker - c:\programdata\docker\windowsfilter 폴더 정리하는 방법파일 다운로드1
11050정성태9/24/201627800VC++: 101. 반올림하지 않고 double 변수 값 출력하는 방법 [3]
11049정성태9/24/201622244오류 유형: 357. 윈도우 백업 시 오류 - 0x81000037
11048정성태9/24/201623319VC++: 100. 전역 변수 유형별 실행 파일 크기 차이점
11047정성태9/21/201627214기타: 61. algospot.com - 양자화(Quantization) 문제 [2]파일 다운로드1
11046정성태9/15/201628919개발 환경 구성: 298. Windows 10 - bash 실행 시 시작 디렉터리 자동 변경
11045정성태9/15/201621544Windows: 119. Windows 10 - bash 명령어 창을 실행했는데 바로 닫히는 경우
11044정성태9/15/201621773VS.NET IDE: 112. Visual Studio 확장 - 편집 화면 내에서 링크를 누르면 외부 웹 브라우저에서 열기
11043정성태9/15/201622500.NET Framework: 606. .NET 스레드 콜 스택 덤프 (7) - ClrMD(Microsoft.Diagnostics.Runtime)를 이용한 방법 [1]파일 다운로드1
11042정성태9/14/201620593오류 유형: 356. Unknown custom metadata item kind: 6
11041정성태9/10/201620715.NET Framework: 605. CLR4 보안 - yield 구문 내에서 SecurityCritical 메서드 사용 불가 - 2번째 이야기
11040정성태9/10/201628183.NET Framework: 604. C# Windows Forms - Drag & Drop 예제 코드 [2]파일 다운로드1
11039정성태9/9/201624019오류 유형: 355. Visual Studio 빌드 오류 - error CS0122: '__ComObject' is inaccessible due to its protection level
11038정성태9/9/201626664VC++: 99. 서로 다른 프로세스에서 WM_DROPFILES 메시지를 전송하는 방법파일 다운로드1
11037정성태9/8/201629808.NET Framework: 603. socket - shutdown 호출이 필요한 사례파일 다운로드1
11036정성태8/29/201625664개발 환경 구성: 297. 소스 코드가 없는 닷넷 어셈블리를 디버깅할 때 지역 변숫값을 확인하는 방법
11035정성태8/29/201621550오류 유형: 354. .NET Reflector - PDB 생성 화면에서 "Clear Store"를 하면 "Index and length must refer to a location within the string" 예외 발생
11034정성태8/25/201625526개발 환경 구성: 296. .NET Core 프로젝트를 NuGet Gallery에 배포하는 방법 [2]
11033정성태8/24/201623459오류 유형: 353. coreclr 빌드 시 error C3249: illegal statement or sub-expression for 'constexpr' function
11032정성태8/23/201622635개발 환경 구성: 295. 최신의 Visual C++ 컴파일러 도구를 사용하는 방법 [1]
... 106  107  108  109  110  111  112  113  114  115  [116]  117  118  119  120  ...