# Экспорт данных миграции с GitHub Enterprise Server

Чтобы изменить платформы или перейти с пробного экземпляра на рабочий экземпляр, можно экспортировать данные миграции из GitHub Enterprise Server экземпляра, подготовив экземпляр, заблокировав репозитории и создав архив миграции.

## Подготовка исходного экземпляра GitHub Enterprise Server

1. Убедитесь, что вы являетесь администратором сайта в источнике GitHub Enterprise Server . Лучший способ сделать это — обеспечить возможность доступа по [SSH к экземпляру](/ru/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh).

2. [Создание маркера](/ru/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) доступа с `repo` областями и `admin:org` областями в исходном экземпляре GitHub Enterprise Server .

3. Чтобы свести к минимуму время простоя, создайте список репозиториев, которые необходимо экспортировать из исходного экземпляра. Можно добавить сразу несколько репозиториев для экспорта с помощью текстового файла, в котором указаны URL-адреса каждого репозитория в отдельной строке.

## Экспорт исходных GitHub Enterprise Server репозиториев

> \[!NOTE]
> Блокировка репозитория предотвращает доступ на запись к репозиторию. Связать новые команды или участников совместной работы с заблокированным репозиторием невозможно.
>
> Если вы выполняете пробный запуск, блокировать репозиторий не нужно. При переносе данных из используемого репозитория GitHub настоятельно рекомендует блокировать репозиторий. Дополнительные сведения см. в разделе [Сведения о миграции ghe-миграции](/ru/migrations/using-ghe-migrator/about-ghe-migrator#types-of-migrations).

1. SSH в GitHub.com. Если экземпляр состоит из нескольких узлов, например, если настроен высокий уровень доступности или георепликация, передача осуществляется по SSH в основной узел. При использовании кластера можно использовать для передачи по SSH в любой узел. Замените HOSTNAME именем узла для экземпляра, именем узла или IP-адресом узла. Дополнительные сведения см. в разделе [Доступ к административной оболочке (SSH)](/ru/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. Чтобы подготовить репозиторий для экспорта, используйте команду `ghe-migrator add` с URL-адресом репозитория:
   * Если вы блокируете репозиторий, добавьте команду с помощью `--lock`. Если вы выполняете пробный запуск, `--lock` не требуется.

     ```shell
     ghe-migrator add https://HOSTNAME/USERNAME/REPO-NAME --lock
     ```

   * Вы можете исключить вложения файлов, добавив `--exclude_attachments` в команду. Вложения файлов могут быть большими и могут без необходимости увеличить размер окончательного архива миграции.

   * Чтобы подготовить сразу несколько репозиториев для экспорта, создайте текстовый файл со списком всех URL-адресов репозиториев в отдельной строке и выполните команду `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 миграции, созданный для идентификации этой операции экспорта, а также список ресурсов, добавленных в операцию экспорта. Вы будете использовать GUID миграции, созданный в последующих шагах `ghe-migrator add` и `ghe-migrator export`, чтобы сообщить `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 миграции существующая операция экспорта обновляется. При повторном запуске `ghe-migrator add` без GUID миграции запускается новая операция экспорта и создается новый GUID миграции.
   **Не используйте GUID миграции, созданный во время экспорта при подготовке миграции к импорту**.

6. Чтобы добавить дополнительные репозитории в ту же операцию экспорта, используйте команду `ghe-migrator add` с флагом `-g`. Вы передадите новый URL-адрес репозитория и GUID миграции из шага 5.

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

7. Завершив добавление репозиториев, создайте архив миграции с использованием команды `ghe-migrator export` с флагом `-g` и GUID миграции на шаге 5:

   ```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](/ru/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server#preparing-the-migrated-data).