# 백업에서 복원

GitHub Enterprise Server 이전에 만든 백업 스냅샷을 사용하여 인스턴스를 복원합니다.

명령줄을 GitHub Enterprise Server 사용하여 백업에서 인스턴스를 복원할 수 있습니다. 백업 서비스는 구성 및 사용자 데이터를 포함하여 전체 인스턴스 복원을 지원합니다.

> \[!WARNING] 백업에서 복원하면 인스턴스에 있는 **모든 기존 데이터를 덮어쓰게** 됩니다. 이 작업은 실행 취소할 수 없습니다.

## 스냅샷 버전 요구 사항

대상 인스턴스의 버전보다 뒤떨어진 최대 두 개의 기능 버전에서 나온 스냅샷만 복원할 수 있습니다.

다음은 그 예입니다.

* 버전 3.17의 스냅샷은 3.17.x, 3.18.x, 3.19.x에서 실행 중인 대상에 복원할 수 있습니다.
* 3.17 스냅샷은 3.20에 복원할 수 없습니다. 두 개 이상의 버전 차이가 있기 때문입니다.

또한, 더 최신 버전에서 이전 버전으로도 복원할 수 없습니다. 예를 들어 3.18 스냅샷을 3.17 인스턴스로 복원하려고 하면 실패합니다. `Error: Snapshot can not be restored to an older release of GitHub Enterprise Server.`

## 사전 요구 사항

백업 복원 전:

1. 대상 인스턴스에서 **유지 관리 모드 활성화**를 수행합니다.
   [유지 관리 모드 사용 설정 및 예약](/ko/enterprise-server@3.21/admin/configuration/configuring-your-enterprise/enabling-and-scheduling-maintenance-mode)을(를) 참조하세요.
2. 스냅샷이 포함된 백업 스토리지에 대한 **액세스를 확인**합니다.
3. **방해가 되는 서비스를 일시 중지하세요.** HA(고가용성)를 사용하는 경우, 복제가 중지되어 있는지 확인합니다.
4. \*\*
   GitHub Actions준비\*\* - 사용하도록 설정된 경우 대상 인스턴스가 올바른 외부 스토리지로 구성되어 있는지 확인합니다. 자세한 내용을 보려면 [GitHub Actions가 활성화된 복구](/ko/enterprise-server@3.21/admin/backing-up-and-restoring-your-instance/restoring-with-github-actions-enabled)(을)를 참조하세요.

## 복원 작업 시작

스냅샷에서 복원하려면:

1. `admin` 사용자로 대상 인스턴스에 SSH를 실행합니다.

2. 다음 명령 중 하나를 실행합니다.

   * 최신 스냅샷 복원:

     ```shell
     ghe-restore
     ```

   * 특정 스냅샷을 복원합니다.
     `<SNAPSHOT_TIMESTAMP>`를 복원하려는 스냅샷의 타임스탬프로 바꾸세요(예: `YYYYMMDDTHHMMSS`).

     ```shell
     ghe-restore -s <SNAPSHOT_TIMESTAMP>
     ```

   * (선택 사항) 구성, 인증서, 라이선스 데이터를 강제로 덮어씁니다.

     ```shell
     ghe-restore -c          # Latest snapshot
     ghe-restore -s <SNAPSHOT_TIMESTAMP> -c  # Specific snapshot
     ```

3. **다음에서 완료합니다.관리 콘솔**

   * 모든 구성 설정(네트워크, 인증, TLS 등)을 검토합니다.
   * **Save settings**를 클릭하여 이 설정을 적용하고 서비스를 시작합니다.
   * 이 단계가 완료될 때까지 인스턴스는 완전히 작동하지 않습니다.

4. **복원된 인스턴스의 유효성을 검사**하여 모든 것이 예상대로 작동하는지 확인합니다.

5. **HA를 사용하는 경우**, 먼저 독립 실행형 인스턴스에서 복원을 완료하세요. 그런 다음 HA를 다시 구성합니다.

   * 동기화 문제(예: `ghe-repl-status`의 부실 UUID)가 발생하면 `ghe-repl-teardown`을 실행합니다.
   * 도움을 받으려면 다음으로 문의하세요 GitHub 지원.

6. **자체 호스팅 GitHub Actions 러너를 다시 등록**하세요. 복원하면 이전 토큰이 무효화됩니다.

## 스냅샷 순환 및 보존

스냅샷은 보존 설정에 따라 자동으로 정리됩니다.

* 가장 최근의 n개 스냅샷만 유지됩니다(구성된 대로).
* 백업이 성공적으로 완료될 때마다 이전 스냅샷은 삭제됩니다.
* 스냅샷은 쉽게 참조할 수 있도록 타임스탬프(`YYYYMMDDTHHMMSS`)를 사용하여 이름이 지정됩니다.
* 하드 링크는 전체 복원 기능을 유지하는 동시에 변경되지 않은 파일을 효율적으로 저장하는 데 사용됩니다.

## 복원 실패 문제 해결

복원 작업이 실패하면 다음을 확인하세요.

* **백업 완전성** – 스냅샷이 중단되거나 손상되지 않았는지 확인합니다.
* **스토리지 액세스** – 인스턴스가 백업 볼륨을 탑재하고 읽을 수 있는지 확인합니다.
* **버전 불일치** – 스냅샷 버전이 대상 인스턴스와 호환되는지 확인합니다.
* **로그** – `/var/log/github-backup/restore-verbose-[timestamp].log`를 검토하여 오류가 있는지 확인하세요.

관리 콘솔 일반 오류가 표시되면 인스턴스에 SSH하여 자세한 로그에 액세스합니다.