Skip to main content

GitHub.com에서 마이그레이션 데이터 내보내기

API를 사용하여 마이그레이션할 리포지토리를 선택한 다음, GitHub Enterprise Server 인스턴스로 가져올 수 있는 마이그레이션 보관 파일을 생성하여 GitHub.com의 조직에서 마이그레이션 데이터를 내보낼 수 있습니다.

GitHub에서 원본 조직 준비

  1. 원본 조직의 리포지토리에 대한 소유자 권한이 있는지 확인합니다.

  2. GitHub.com에서의 repoadmin:org 범위로 액세스 토큰 생성

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

조직의 리포지토리 내보내기

참고: 마이그레이션 후에는 포크 관계가 유지되지 않습니다.

GitHub.com에서 리포지토리 데이터를 내보내려면 마이그레이션 API를 사용합니다.

마이그레이션 API는 현재 미리 보기 기간이므로 나중에 엔드포인트 및 매개 변수가 변경될 수 있습니다.

마이그레이션 보관 파일 생성

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

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

  1. 조직 구성원에게 마이그레이션을 수행할 예정임을 알립니다. 내보내는 리포지토리 수에 따라 몇 분 정도 걸릴 수 있습니다. 가져오기를 포함한 전체 마이그레이션에 몇 시간이 소요될 수 있으므로 전체 프로세스가 소요되는 시간을 결정하기 위해 평가판을 실행하는 것이 좋습니다. 자세한 내용은 "ghe-migrator 정보"을 참조하세요.

  2. POST 요청을 마이그레이션 엔드포인트로 전송하여 마이그레이션을 시작하세요. 필요한 사항:

    • 인증용 액세스 토큰

    • 마이그레이션할 리포지토리 목록:

      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -X POST \
      -H "Accept: application/vnd.github+json" \
      -d'{"lock_repositories":true,"repositories":["ORG_NAME</em>/REPO_NAME", "ORG_NAME/REPO_NAME"]}' \
      https://api.github.com/orgs/ORG_NAME/migrations
      
    • 리포지토리를 마이그레이션하기 전에 잠그려면 lock_repositoriestrue로 설정되었는지 확인합니다. 적극 권장 사항입니다.

    • 엔드포인트에 exclude_attachments: true를 전달하여 첨부 파일을 제외할 수 있습니다. 첨부 파일은 용량이 클 수 있으며 최종 마이그레이션 보관 파일을 불필요하게 블로트할 수 있습니다. 최종 보관 크기는 20GB 미만이어야 합니다.

    이 요청은 마이그레이션을 나타내는 고유의 id를 반환합니다. 마이그레이션 API에 대한 후속 호출에 필요합니다.

  3. 마이그레이션 상태 엔드포인트GET 요청을 보내 마이그레이션 상태를 가져옵니다. 필요한 사항:

    • 인증용 액세스 토큰

    • 마이그레이션의 고유 id :

      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -H "Accept: application/vnd.github+json" \
      https://api.github.com/orgs/ORG_NAME/migrations/ID
      

    마이그레이션은 다음 상태 중 하나일 수 있습니다.

    • pending - 마이그레이션이 아직 시작되지 않았음을 의미합니다.
    • exporting - 마이그레이션이 진행 중임을 의미합니다.
    • exported - 마이그레이션이 성공적으로 완료되었음을 의미합니다.
    • failed - 마이그레이션이 실패했음을 의미합니다.
  4. 마이그레이션을 내보낸 후 마이그레이션 다운로드 엔드포인트GET 요청을 전송하여 마이그레이션 보관 파일을 다운로드합니다. 필요한 사항:

    • 인증용 액세스 토큰

    • 마이그레이션의 고유 id :

      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -H "Accept: application/vnd.github+json" \
      -L -o migration_archive.tar.gz \
      https://api.github.com/orgs/ORG_NAME/migrations/ID/archive
      
  5. 마이그레이션 보관 파일은 7일 후에 자동으로 삭제됩니다. 더 빨리 삭제하려는 경우 마이그레이션 보관 삭제 엔드포인트DELETE 요청을 보낼 수 있습니다. 필요한 사항:

    • 인증용 액세스 토큰

    • 마이그레이션의 고유 id :

      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -X DELETE \
      -H "Accept: application/vnd.github+json" \
      https://api.github.com/orgs/ORG_NAME/migrations/ID/archive
      
  6. GitHub Enterprise Server 인스턴스로 가져오기 위해 보관된 마이그레이션 데이터를 준비하려면 “엔터프라이즈로 데이터 마이그레이션 준비”를 참조하세요.