# GitHub Enterprise Server からの移行データのエクスポート

プラットフォームを変更したり、試用版インスタンスから運用インスタンスに移行したりするには、インスタンスを準備し、リポジトリをロックし、移行アーカイブを生成することで、 GitHub Enterprise Server インスタンスから移行データをエクスポートできます。

## GitHub Enterprise Server ソース インスタンスの準備

1. GitHub Enterprise Server ソースのサイト管理者であることを確認します。 これを行う最善の方法は、[インスタンスに SSH 接続](/ja/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh)できることを確認することです。

2. [
   ](/ja/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) と `repo` のスコープを持つ`admin:org`
   GitHub Enterprise Server ソース インスタンス上の  。

3. ダウンタイムを最小化するには、ソースインスタンスからエクスポートしたいリポジトリのリストを作成してください。 各行にそれぞれのリポジトリのURLをリストアップしたテキストファイルを使えば、複数のリポジトリをエクスポートに一度に追加できます。

## GitHub Enterprise Server ソース リポジトリのエクスポート

> \[!NOTE]
> リポジトリをロックすると、リポジトリへのすべての書き込みアクセスができなくなります。 ロックされたリポジトリには、新しいTeamやコラボレータを関連づけることはできません。
>
> トライアル実行をしているなら、リポジトリをロックする必要はありません。 使用中のリポジトリからデータを移行する場合、GitHub はリポジトリをロックすることを強くお勧めします。 詳しくは、「[ghe-migrator について](/ja/migrations/using-ghe-migrator/about-ghe-migrator#types-of-migrations)」をご覧ください。

1. GitHub.comに SSH 接続します。 インスタンスが複数のノードで構成されている場合は (高可用性や geo レプリケーションが構成されている場合など)、プライマリ ノードに SSH 接続します。 クラスターを使用する場合は、任意のノードに SSH 接続できます。 HOSTNAME をインスタンスのホスト名、またはノードのホスト名または IP アドレスに置き換えます。 詳しくは、「[管理シェル (SSH) にアクセスする](/ja/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 を 1 行ずつ記載したテキスト ファイルを作成し、`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` コマンドを使用します。 これで新しいリポジトリの URL とステップ 5 の移行 GUID を渡します。

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

7. リポジトリの追加が完了したら、`ghe-migrator export` フラグと手順 5 の移行 GUID を指定した `-g` コマンドを使用して移行アーカイブを生成します。

   ```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 へのデータの移行](/ja/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server#preparing-the-migrated-data)」を参照してください。