跳到主要内容

从 GitHub Enterprise Server 导出迁移数据

要更改平台或从试用实例迁移到生产实例,您可以通过准备实例、锁定仓库和生成迁移存档来从 GitHub Enterprise Server 实例导出迁移数据。

准备 GitHub Enterprise Server 源实例

  1. 验证您是 GitHub Enterprise Server 源的站点管理员。最好的方法是验证您可以通过 SSH 登录实例

  2. 在 GitHub Enterprise Server 源实例上使用`repo`和`admin:org`作用域生成访问令牌

  3. 为了最大限度地减少停机时间,请列出您要从源实例导出的仓库。您可以使用文本文件一次将多个仓库添加到导出中,该文件在单独的行上列出每个仓库的 URL。

导出 GitHub Enterprise Server 源仓库

注意

锁定仓库会阻止对仓库的所有写入访问。您无法将新的团队或协作者与已锁定的仓库关联。

如果您正在执行试运行,则无需锁定仓库。当您从正在使用的仓库迁移数据时,GitHub 强烈建议锁定仓库。有关更多信息,请参阅“关于 ghe-migrator”。

  1. SSH 登录 GitHub.com。如果您的实例包含多个节点(例如,如果配置了高可用性或地理复制),请 SSH 登录主节点。如果您使用集群,则可以 SSH 登录任何节点。将 HOSTNAME 替换为实例的主机名,或节点的主机名或 IP 地址。有关更多信息,请参阅“访问管理 shell (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. 出现提示时输入个人访问令牌,您已在“准备 GitHub Enterprise Server 源实例”中创建了该令牌

    Enter personal access token:  **************
    
  5. `ghe-migrator add`完成后,它将打印生成的唯一“迁移 GUID”,以识别此导出以及添加到导出的资源列表。您将在后续的`ghe-migrator add`和`ghe-migrator export`步骤中使用它生成的迁移 GUID,以告知`ghe-migrator`继续对同一导出进行操作。

    > 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 添加新的仓库时,它都会更新现有导出。如果您再次运行`ghe-migrator add`而没有迁移 GUID,它将启动新的导出并生成新的迁移 GUID。**在开始准备导入迁移时,请勿重复使用导出期间生成的迁移 GUID。**

  6. 要向同一导出添加更多仓库,请使用带有`-g`标志的`ghe-migrator add`命令。您将传入新的仓库 URL 和步骤 5 中的迁移 GUID

    ghe-migrator add https://HOSTNAME/USERNAME/OTHER-REPO-NAME -g MIGRATION-GUID --lock
    
  7. 添加完仓库后,使用`-g`标志和步骤 5 中的迁移 GUID 使用`ghe-migrator export`命令生成迁移存档

    $ 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实例,请参见“将数据迁移到GitHub Enterprise Server”。