Skip to main content

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

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

GitHub Enterprise Server 원본 인스턴스 준비

  1. GitHub Enterprise Server 원본의 사이트 관리자인지 확인합니다. 이 작업을 수행하는 가장 좋은 방법은 인스턴스에 SSH할 수 있는지 확인하는 것입니다.

  2. GitHub Enterprise Server 원본 인스턴스의 repoadmin:org 범위로 액세스 토큰 생성

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

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

Note

리포지토리를 잠그면 리포지토리에 대한 모든 쓰기 권한이 차단됩니다. 새 팀 또는 협력자를 잠긴 리포지토리와 연결할 수 없습니다.

평가판 실행을 수행하는 경우 리포지토리를 잠글 필요가 없습니다. 사용 중인 리포지토리에서 데이터를 마이그레이션하는 경우 GitHub에서는 리포지토리를 잠글 것을 적극 권장합니다. 자세한 내용은 "ghe-migrator 정보" 항목을 참조하세요.

  1. 에 SSH합니다. 인스턴스가 여러 노드로 구성된 경우(예: 고가용성 또는 지역 복제가 구성된 경우) 주 노드에 대한 SSH를 수행합니다. 클러스터를 사용하는 경우 임의 노드에 대해 SSH를 수행할 수 있습니다. HOSTNAME을 인스턴스의 호스트 이름 또는 노드의 호스트 이름이나 IP 주소로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 내보내기용 리포지토리를 준비하려면 리포지토리의 URL과 함께 ghe-migrator add 명령을 사용합니다.

    • 리포지토리를 잠그는 경우 --lock과 함께 명령을 추가합니다. 무료 평가판을 실행하는 경우 --lock은 필요하지 않습니다.

      ghe-migrator add https://HOSTNAME/USERNAME/REPO-NAME --lock
      
    • 명령에 --exclude_attachments를 추가하여 첨부 파일을 제외할 수 있습니다. 첨부 파일은 용량이 클 수 있으며 최종 마이그레이션 보관 파일을 불필요하게 블로트할 수 있습니다.

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

      ghe-migrator add -i PATH/TO/YOUR/REPOSITORY_URL.txt
      
  3. 메시지가 표시되면 GitHub Enterprise Server의 사용자 이름을 입력합니다.

    Enter username authorized for migration:  admin
    
  4. personal access token을(를) 묻는 메시지가 표시되면 “GitHub Enterprise Server 원본 인스턴스 준비”에서 만든 액세스 토큰을 입력합니다.

    Enter personal access token:  **************
    
  5. ghe-migrator add가 완료되면 이 내보내기를 식별하기 위해 생성된 고유의 "마이그레이션 GUID"와 내보내기에 추가된 리소스 목록을 출력합니다. ghe-migrator add 이후에 생성된 마이그레이션 GUID 및 동일한 내보내기에서 ghe-migrator가 계속 작동하도록 지시하는 ghe-migrator export 단계를 사용합니다.

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

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

    $ 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(으)로의 연결 종료:

    $ exit
    > logout
    > Connection to HOSTNAME closed.
    
  9. scp 명령을 사용하여 마이그레이션 보관 파일을 컴퓨터에 복사합니다. 보관 파일의 이름은 마이그레이션 GUID로 지정됩니다.

    scp -P 122 admin@HOSTNAME:/data/github/current/tmp/MIGRATION-GUID.tar.gz ~/Desktop
    
  10. GitHub Enterprise Server 인스턴스로 가져오기 위해 보관된 마이그레이션 데이터를 준비하려면 “엔터프라이즈로 데이터 마이그레이션 준비”를 참조하세요.