Windows Server 2025 / 이전 버전과 백업으로 삭제·변경된 파일을 복구하는 방법

백업에서 파일을 복구할 때는 필요한 시점과 항목을 고르고, 먼저 별도 위치에 복원해 내용과 권한을 검증하는 편이 안전합니다. 현재 파일을 바로 덮어쓰면 백업 이후의 정상 변경도 사라질 수 있으므로 원본 경로 복구는 확인 후 선택합니다.

백업 시점과 현재 파일을 구분합니다

FS1의 D:\BackupLab\sample.txt를 E:에 백업한 상태를 전제로 합니다. 백업 당시 내용은 backup version A이며 해시를 기록했습니다. 다른 서버나 경로를 백업했다면 명령과 대상도 실제 값으로 바꾸세요.

  1. Windows Server Backup 또는 wbadmin get versions에서 E:의 백업 시각과 버전을 확인합니다.
  2. 필요한 파일이 그 시점에 존재했고 백업 범위에 포함됐는지 확인합니다.
  3. 원본 파일의 현재 내용과 해시를 별도로 기록합니다.
  4. 복구 대상은 기존 데이터가 없는 D:\RestoreLab 아래 새 실행 폴더로 정합니다.

비교를 위해 이 실습에서 만든 sample.txt의 현재 내용만 backup version B로 바꿉니다. 운영 파일이나 원본 데이터 삭제 없이도 복구 전후 차이를 확인할 수 있습니다.

'backup version B' | Set-Content -LiteralPath 'D:\BackupLab\sample.txt' -Encoding UTF8
Get-Content -LiteralPath 'D:\BackupLab\sample.txt'
wbadmin get versions -backupTarget:E:

복구 마법사에서 별도 위치를 선택합니다

  1. Windows Server Backup의 로컬 백업에서 복구를 선택합니다.
  2. 백업 위치에서 해당 서버 또는 다른 위치를 선택하고 E:의 실제 백업을 지정합니다.
  3. 필요한 백업 날짜·시각을 선택합니다. 최신 버전이라는 이유만으로 삭제 후 시점을 선택하지 않습니다.
  4. 복구 종류는 파일 및 폴더를 선택하고 BackupLab의 sample.txt를 찾습니다.
  5. 다른 위치로 복구를 선택하고 새 RestoreLab 실행 폴더를 지정합니다.
  6. 기존 파일과 충돌할 때의 처리 및 ACL 복원 여부를 검토한 뒤 복구합니다.

GUI가 요구하는 선택지는 백업 위치와 항목에 따라 달라질 수 있습니다. 파일·볼륨·시스템 상태 복구를 구분하세요. 이 실습은 개별 파일 복원이며 전체 볼륨 덮어쓰기나 DC 복구를 실행하지 않습니다.

PowerShell에서 실제 버전을 입력하는 대안입니다

아직 GUI 복구를 하지 않았다면 관리자 PowerShell에서 아래 전체 예시를 사용할 수 있습니다. 버전 식별자는 자신의 wbadmin get versions 출력에서 그대로 복사합니다. wbadmin start recovery 설명처럼 날짜 형식·항목 종류·대상을 정확히 지정합니다.

$backupVersion = Read-Host 'Version identifier shown by wbadmin get versions'
$restoreDirectory = Join-Path 'D:\RestoreLab' ((Get-Date -Format 'yyyyMMdd-HHmmss') + '-' + ([guid]::NewGuid().ToString('N').Substring(0,6)))
New-Item -ItemType Directory -Path $restoreDirectory -Force | Out-Null
wbadmin get items "-version:$backupVersion" -backupTarget:E:
wbadmin start recovery "-version:$backupVersion" -itemType:File -items:D:\BackupLab\sample.txt "-recoveryTarget:$restoreDirectory" -backupTarget:E: -overwrite:CreateCopy
$restoreDirectory

get items 결과에서 원하는 파일·볼륨을 포함하는지 확인한 뒤 복구 명령을 진행합니다. 명령은 확인을 생략하는 -quiet를 사용하지 않습니다. 같은 이름의 기존 파일을 덮어쓰지 않도록 새 폴더와 CreateCopy를 사용했지만, 표시되는 최종 원본·대상은 직접 검토해야 합니다.

내용·해시·ACL을 확인합니다

실제 출력된 복구 폴더 안에서 sample.txt를 찾습니다. 복구 방식에 따라 하위 경로가 만들어질 수 있어 파일이 루트에 바로 생긴다고 가정하지 않습니다. GUI로 복구했다면 아래 변수에 실제 새 폴더 경로를 지정합니다.

Get-ChildItem -LiteralPath $restoreDirectory -File -Recurse
Get-ChildItem -LiteralPath $restoreDirectory -File -Recurse | Get-FileHash -Algorithm SHA256
Get-Content -LiteralPath 'D:\BackupLab\sample.txt'

복구된 파일이 version A이고 현재 원본은 version B로 유지되는지 비교합니다. 복구 파일의 해시는 백업 전 기록한 A의 해시와 비교하세요. 원본 B의 해시와 다르다는 사실은 이 비교에서 정상입니다.

Get-Acl 또는 파일 속성의 보안 탭으로 소유자·접근 권한도 확인합니다. 원래 ACL을 복구하면 현재 복원 위치의 권한과 다를 수 있습니다. 파일 내용을 열 수 있는 사용자와 불필요하게 노출되는 사용자가 없는지 점검하세요.

원래 위치 복구는 검증 후 결정합니다

실제 삭제·손상 복구에서는 현재 파일을 보존한 뒤 검증된 복구본을 서비스에 반영할지 결정합니다. 사용 중인 파일·응용 프로그램 잠금과 사용자 작업도 확인하세요. 현재 경로 덮어쓰기는 검증용 별도 폴더 복원보다 영향이 큽니다.

백업을 찾지 못하면 저장 위치·서버 이름·카탈로그와 버전 식별자를 확인합니다. 백업 버전 조회처럼 다른 컴퓨터 백업은 -machine 등 조건이 필요할 수 있습니다. 암호화된 저장소의 복구 키와 필요한 자격 증명도 복구 시점에 사용할 수 있어야 합니다.

시험이 끝난 뒤 새 RestoreLab 실행 폴더의 파일만 정리할 수 있습니다. 백업 전체를 삭제하지 말고 확인한 버전·파일·해시·권한과 복구 소요 시간을 운영 기록에 남기세요.