Skip to main content

Exporting migration data from your enterprise

To change platforms or move from a trial instance to a production instance, you can export migration data from a GitHub Enterprise Server instance by preparing the instance, locking the repositories, and generating a migration archive.

Preparing the GitHub Enterprise Server source instance

  1. Verify that you are a site administrator on the GitHub Enterprise Server source. The best way to do this is to verify that you can SSH into the instance.

  2. Generación de un token de acceso con los ámbitos repo y admin:org on the GitHub Enterprise Server source instance.

  3. Para minimizar los tiempos de inactividad, haz una lista de repositorios que deseas exportar desde la instancia de origen. Puedes agregar múltiples repositorios a una exportación a la vez usando un archivo de texto que muestra la URL de cada repositorio en una línea separada.

Exporting the GitHub Enterprise Server source repositories

Nota: El bloqueo de un repositorio impedirá todos los accesos de escritura al mismo. No puedes asociar equipos o colaboradores nuevos con un repositorio bloqueado.

Si estás llevando a cabo una ejecución de prueba, no necesitas bloquear el repositorio. Al migrar datos de un repositorio que está en uso, GitHub recomienda encarecidamente bloquear el repositorio. Para más información, vea "Acerca de las migraciones".

  1. SSH into your GitHub Enterprise Server instance. If your instance comprises multiple nodes, for example if high availability or geo-replication are configured, SSH into the primary node. If you use a cluster, you can SSH into any node. For more information about SSH access, see "Accessing the administrative shell (SSH)."

    $ ssh -p 122 admin@HOSTNAME
  2. To prepare a repository for export, use the ghe-migrator add command with the repository's URL:

    • If you're locking the repository, append the command with --lock. If you're performing a trial run, --lock is not needed.
      $ ghe-migrator add https://HOSTNAME/USERNAME/REPO-NAME --lock
    • You can exclude file attachments by appending --exclude_attachments to the command. Los archivos adjuntos pueden resultar muy grandes y es posible que sobrecarguen tu archivo de migración final de manera innecesaria.
    • To prepare multiple repositories at once for export, create a text file listing each repository URL on a separate line, and run the ghe-migrator add command with the -i flag and the path to your text file.
      $ ghe-migrator add -i PATH/TO/YOUR/REPOSITORY_URL.txt
  3. When prompted, enter your GitHub Enterprise Server username:

    Enter username authorized for migration:  admin
  4. When prompted for a personal access token, enter the access token you created in "Preparing the GitHub Enterprise Server source instance":

    Enter personal access token:  **************
  5. When ghe-migrator add has finished it will print the unique "Migration GUID" that it generated to identify this export as well as a list of the resources that were added to the export. You will use the Migration GUID that it generated in subsequent ghe-migrator add and ghe-migrator export steps to tell ghe-migrator to continue operating on the same 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

    Each time you add a new repository with an existing Migration GUID it will update the existing export. If you run ghe-migrator add again without a Migration GUID it will start a new export and generate a new Migration GUID. Do not re-use the Migration GUID generated during an export when you start preparing your migration for import.

  6. If you locked the source repository, you can use the ghe-migrator target_url command to set a custom lock message on the repository page that links to the repository's new location. Pass the source repository URL, the target repository URL, and the Migration GUID from Step 5:

    $ ghe-migrator target_url https://HOSTNAME/USERNAME/REPO-NAME https://TARGET-HOSTNAME/TARGET-USER-NAME/TARGET-REPO-NAME -g MIGRATION-GUID
  7. To add more repositories to the same export, use the ghe-migrator add command with the -g flag. You'll pass in the new repository URL and the Migration GUID from Step 5:

    $ ghe-migrator add https://HOSTNAME/USERNAME/OTHER-REPO-NAME -g MIGRATION-GUID --lock
  8. When you've finished adding repositories, generate the migration archive using the ghe-migrator export command with the -g flag and the Migration GUID from Step 5:

    $ ghe-migrator export -g MIGRATION-GUID
    > Archive saved to: /data/github/current/tmp/MIGRATION-GUID.tar.gz
    • Para especificar dónde se deben almacenar provisionalmente los archivos de migración, anexe --staging-path=/full/staging/path al comando. Tiene como valor predeterminado /data/user/tmp.
  9. Close the connection to your GitHub Enterprise Server instance:

    $ exit
    > logout
    > Connection to HOSTNAME closed.
  10. Copy the migration archive to your computer using the scp command. The archive file will be named with the Migration GUID:

    $ scp -P 122 admin@HOSTNAME:/data/github/current/tmp/MIGRATION-GUID.tar.gz ~/Desktop
  11. A fin de preparar los datos de migración archivados para la importación en una instancia de GitHub Enterprise Server, vea "Preparación para migrar datos a la empresa".