# GitHub Enterprise Server에서 마이그레이션 데이터 내보내기

플랫폼을 변경하거나 평가판 인스턴스에서 프로덕션 인스턴스로 이동하려면 인스턴스를 준비하고 리포지토리를 잠그고 마이그레이션 보관 파일을 생성하여 인스턴스에서 GitHub Enterprise Server 마이그레이션 데이터를 내보낼 수 있습니다.

## GitHub Enterprise Server 원본 인스턴스 준비

1. 원본의 사이트 관리자인지 확인합니다 GitHub Enterprise Server . 이 작업을 수행하는 가장 좋은 방법은 [인스턴스에 SSH](/ko/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh)할 수 있는지 확인하는 것입니다.

2. [액세스 토큰을 생성](/ko/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)하고 `repo` 및 `admin:org` 범위를 사용합니다원본 인스턴스에서 GitHub Enterprise Server

3. 가동 중지 시간을 최소화하려면 소스 인스턴스에서 내보낼 리포지토리 목록을 만듭니다. 각 리포지토리의 URL을 별도의 줄에 나열하는 텍스트 파일을 사용하여 한 번에 여러 리포지토리를 내보내기에 추가할 수 있습니다.

## GitHub Enterprise Server 원본 리포지토리 내보내기

> \[!NOTE]
> 리포지토리를 잠그면 리포지토리에 대한 모든 쓰기 권한이 차단됩니다. 새 팀 또는 협력자를 잠긴 리포지토리와 연결할 수 없습니다.
>
> 평가판 실행을 수행하는 경우 리포지토리를 잠글 필요가 없습니다. 사용 중인 리포지토리에서 데이터를 마이그레이션하는 경우 GitHub에서는 리포지토리를 잠글 것을 적극 권장합니다. 자세한 내용은 [ghe-migrator 정보](/ko/migrations/using-ghe-migrator/about-ghe-migrator#types-of-migrations)을(를) 참조하세요.

1. SSH into GitHub.com. 인스턴스가 여러 노드로 구성된 경우(예: 고가용성 또는 지역 복제가 구성된 경우) 주 노드에 대한 SSH를 수행합니다. 클러스터를 사용하는 경우 임의 노드에 대해 SSH를 수행할 수 있습니다. HOSTNAME을 인스턴스의 호스트 이름 또는 노드의 호스트 이름이나 IP 주소로 바꿉니다. 자세한 내용은 [관리 셸(SSH)에 액세스](/ko/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh)을(를) 참조하세요.

   ```shell copy
   ssh -p 122 admin@HOSTNAME
   ```

2. 내보내기용 리포지토리를 준비하려면 리포지토리의 URL과 함께 `ghe-migrator add` 명령을 사용합니다.
   * 리포지토리를 잠그는 경우 `--lock`과 함께 명령을 추가합니다. 무료 평가판을 실행하는 경우 `--lock`은 필요하지 않습니다.

     ```shell
     ghe-migrator add https://HOSTNAME/USERNAME/REPO-NAME --lock
     ```

   * 명령에 `--exclude_attachments`를 추가하여 첨부 파일을 제외할 수 있습니다. 첨부 파일은 용량이 클 수 있으며 최종 마이그레이션 보관 파일을 불필요하게 블로트할 수 있습니다.

   * 내보내기를 위해 여러 리포지토리를 한 번에 준비하려면 다른 라인에 있는 각 리포지토리 URL을 나열하는 텍스트 파일을 만들고, `ghe-migrator add` 플래그 및 텍스트 파일의 경로와 함께 `-i` 명령을 실행합니다.

     ```shell
     ghe-migrator add -i PATH/TO/YOUR/REPOSITORY_URL.txt
     ```

3. 메시지가 표시되면 사용자 이름을 입력합니다 GitHub Enterprise Server .

   ```shell
   Enter username authorized for migration:  admin
   ```

4. 메시지가 personal access token표시되면 [원본 인스턴스 준비에서 만든 액세스 토큰을 GitHub Enterprise Server 입력합니다](#preparing-the-github-enterprise-server-source-instance).

   ```shell
   Enter personal access token:  **************
   ```

5. `ghe-migrator add`가 완료되면 이 내보내기를 식별하기 위해 생성된 고유의 "마이그레이션 GUID"와 내보내기에 추가된 리소스 목록을 출력합니다. 다음의 `ghe-migrator add` 및 `ghe-migrator export` 단계에서 생성된 마이그레이션 GUID를 사용하여 `ghe-migrator`에게 동일한 내보내기 작업을 계속할 수 있도록 지시합니다.

   ```shell
   > 101 models added to export
   > Migration GUID: EXAMPLE-MIGRATION-GUID
   > Number of records in this migration:
   > users                        |  5
   > organizations                |  1
   > repositories                 |  1
   > teams                        |  3
   > protected_branches           |  1
   > pull_request_reviews         |  1
   > milestones                   |  1
   > issues                       |  3
   > pull_requests                |  5
   > pull_request_review_comments |  4
   > commit_comments              |  2
   > issue_comments               | 10
   > issue_events                 | 63
   > releases                     |  3
   > attachments                  |  4
   > projects                     |  2
   ```

   기존 마이그레이션 GUID를 사용하여 새 리포지토리를 추가할 때마다 기존 내보내기가 업데이트됩니다. 마이그레이션 GUID 없이 `ghe-migrator add`를 다시 실행하면 새 내보내기가 시작되고 새 마이그레이션 GUID가 생성됩니다.
   **가져오기를 위해 마이그레이션 준비를 시작할 때 내보내기 하는 동안 생성된 마이그레이션 GUID는 다시 사용하지 마세요**.

6. 동일한 내보내기에서 리포지토리를 더 추가하려면 `ghe-migrator add` 플래그와 함께 `-g` 명령을 사용합니다. 5단계에서 새 리포지토리 URL 및 마이그레이션 GUID를 전달합니다.

   ```shell
   ghe-migrator add https://HOSTNAME/USERNAME/OTHER-REPO-NAME -g MIGRATION-GUID --lock
   ```

7. 리포지토리 추가를 마쳤으면 `ghe-migrator export` 플래그가 있는 `-g` 명령과 5단계의 마이그레이션 GUID를 사용하여 마이그레이션 보관 파일을 생성합니다.

   ```shell
   $ ghe-migrator export -g MIGRATION-GUID
   > Archive saved to: /data/github/current/tmp/MIGRATION-GUID.tar.gz
   ```

   * 마이그레이션 파일을 스테이징할 위치를 지정하려면 `--staging-path=/full/staging/path`를 사용하여 명령을 추가합니다. 기본값은 `/data/user/tmp`입니다.

8. 에 대한 연결을 닫습니다 GitHub.com.

   ```shell
   $ exit
   > logout
   > Connection to HOSTNAME closed.
   ```

9. [
   `scp`
   ](https://acloudguru.com/blog/engineering/ssh-and-scp-howto-tips-tricks#scp) 명령을 사용하여 마이그레이션 보관 파일을 컴퓨터에 복사합니다. 보관 파일의 이름은 마이그레이션 GUID로 지정됩니다.

   ```shell
   scp -P 122 admin@HOSTNAME:/data/github/current/tmp/MIGRATION-GUID.tar.gz ~/Desktop
   ```

10. GitHub Enterprise Server 인스턴스로 가져오기 위해 보관된 마이그레이션 데이터를 준비하려면 [GitHub Enterprise Server로 데이터 마이그레이션](/ko/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server#preparing-the-migrated-data)을(를) 참조하세요.