{"meta":{"title":"从 GitHub Enterprise Server 导出迁移数据","intro":"若要更改平台或从试用实例移动到生产实例，可以通过准备实例、锁定存储库和生成迁移存档，从 GitHub Enterprise Server 实例导出迁移数据。","product":"迁移","breadcrumbs":[{"href":"/zh/migrations","title":"迁移"},{"href":"/zh/migrations/using-ghe-migrator","title":"ghe-migrator"},{"href":"/zh/migrations/using-ghe-migrator/exporting-migration-data-from-github-enterprise-server","title":"从 GHES 导出"}],"documentType":"article"},"body":"# 从 GitHub Enterprise Server 导出迁移数据\n\n若要更改平台或从试用实例移动到生产实例，可以通过准备实例、锁定存储库和生成迁移存档，从 GitHub Enterprise Server 实例导出迁移数据。\n\n## GitHub Enterprise Server准备源实例\n\n1. 验证你是源上的 GitHub Enterprise Server 站点管理员。 执行此操作的最佳方法是验证是否可以[通过 SSH 连接到实例](/zh/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh)。\n\n2. [生成访问令牌](/zh/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)，具有 `repo` 和 `admin:org` 范围 在源实例上 GitHub Enterprise Server 。\n\n3. 为尽量减少停机，请创建要从源实例导出的仓库列表。 您可以使用每行列出一个仓库 URL 的文本文件一次性导出多个仓库。\n\n## 导出 GitHub Enterprise Server 源存储库\n\n> \\[!NOTE]\n> 锁定存储库会阻止对存储库的所有写入访问。 您不能将新团队或协作者与锁定的仓库相关联。\n>\n> 如果您执行的试用版，则无需锁定仓库。 从正在使用的存储库迁移数据时，GitHub 强烈建议锁定存储库。 有关详细信息，请参阅“[关于 ghe-migrator](/zh/migrations/using-ghe-migrator/about-ghe-migrator#types-of-migrations)”。\n\n1. 通过 SSH 连接到 GitHub.com。 如果实例包含多个节点，例如，如果配置了高可用性或异地复制，则通过 SSH 连接到主节点。 如果使用群集，则可以通过 SSH 连接到任何节点。 将 HOSTNAME 替换为实例的主机名，或节点的主机名或 IP 地址。 有关详细信息，请参阅“[访问管理 shell (SSH)](/zh/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh)”。\n\n   ```shell copy\n   ssh -p 122 admin@HOSTNAME\n   ```\n\n2. 要准备需要导出的存储库，请使用 `ghe-migrator add` 命令和存储库的 URL：\n   * 如果要锁定存储库，请在命令后附加 `--lock`。 如果要执行试用运行，则不需要 `--lock`。\n\n     ```shell\n     ghe-migrator add https://HOSTNAME/USERNAME/REPO-NAME --lock\n     ```\n\n   * 可以通过将 `--exclude_attachments` 附加到命令来排除文件附件。 文件附件可能很大，可能不必要地胀大您的最终迁移存档。\n\n   * 要一次准备多个将导出的存储库，请创建一个文本文件并在单独的行中列出每个存储库 URL，然后运行包含 `ghe-migrator add` 标志和文本文件路径的 `-i` 命令。\n\n     ```shell\n     ghe-migrator add -i PATH/TO/YOUR/REPOSITORY_URL.txt\n     ```\n\n3. 出现提示时，输入 GitHub Enterprise Server 用户名：\n\n   ```shell\n   Enter username authorized for migration:  admin\n   ```\n\n4. 出现提示时 personal access token，输入在 [准备 GitHub Enterprise Server 源实例](#preparing-the-github-enterprise-server-source-instance)中创建的访问令牌：\n\n   ```shell\n   Enter personal access token:  **************\n   ```\n\n5. 在 `ghe-migrator add` 完成后，它将打印自身生成并用于标识此导出的唯一的“迁移 GUID”以及添加到导出中的资源列表。 你将使用它在后续 `ghe-migrator add` 和 `ghe-migrator export` 步骤中生成的迁移 GUID，来指示 `ghe-migrator` 继续对同一导出进行操作。\n\n   ```shell\n   > 101 models added to export\n   > Migration GUID: EXAMPLE-MIGRATION-GUID\n   > Number of records in this migration:\n   > users                        |  5\n   > organizations                |  1\n   > repositories                 |  1\n   > teams                        |  3\n   > protected_branches           |  1\n   > pull_request_reviews         |  1\n   > milestones                   |  1\n   > issues                       |  3\n   > pull_requests                |  5\n   > pull_request_review_comments |  4\n   > commit_comments              |  2\n   > issue_comments               | 10\n   > issue_events                 | 63\n   > releases                     |  3\n   > attachments                  |  4\n   > projects                     |  2\n   ```\n\n   每次您添加包含现有迁移 GUID 的新仓库时，它都会更新现有导出。 如果在没有迁移 GUID的情况下再次运行 `ghe-migrator add`，将会启动新的导出并生成新的迁移 GUID。 开始准备要导入的迁移时，不要再次使用在导出过程中生成的迁移 GUID。\n\n6. 若要将更多存储库添加到同一导出，请使用带有 `ghe-migrator add` 标志的 `-g` 命令。 您需要传入新仓库 URL 和第 5 步中的迁移 GUID：\n\n   ```shell\n   ghe-migrator add https://HOSTNAME/USERNAME/OTHER-REPO-NAME -g MIGRATION-GUID --lock\n   ```\n\n7. 添加完存储库后，请使用包含 `ghe-migrator export` 标志和第 5 步中的迁移 GUID 的 `-g` 命令生成迁移存档：\n\n   ```shell\n   $ ghe-migrator export -g MIGRATION-GUID\n   > Archive saved to: /data/github/current/tmp/MIGRATION-GUID.tar.gz\n   ```\n\n   * 要指定迁移文件的暂存位置，请在命令后附加 `--staging-path=/full/staging/path`。 默认为 `/data/user/tmp`。\n\n8. 关闭以下 GitHub.com连接：\n\n   ```shell\n   $ exit\n   > logout\n   > Connection to HOSTNAME closed.\n   ```\n\n9. 使用 [`scp`](https://acloudguru.com/blog/engineering/ssh-and-scp-howto-tips-tricks#scp) 命令将迁移存档复制到计算机。 存档文件将使用迁移 GUID 命名：\n\n   ```shell\n   scp -P 122 admin@HOSTNAME:/data/github/current/tmp/MIGRATION-GUID.tar.gz ~/Desktop\n   ```\n\n10. 若要准备存档的迁移数据以导入到 GitHub Enterprise Server 实例中，请参阅“[将数据迁移到 GitHub Enterprise Server](/zh/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server#preparing-the-migrated-data)”。"}