{"meta":{"title":"从备份还原","intro":"使用先前创建的备份快照还原GitHub Enterprise Server实例。","product":"企业管理员","breadcrumbs":[{"href":"/zh/enterprise-server@3.18/admin","title":"企业管理员"},{"href":"/zh/enterprise-server@3.18/admin/backing-up-and-restoring-your-instance","title":"备份和还原"},{"href":"/zh/enterprise-server@3.18/admin/backing-up-and-restoring-your-instance/restoring-from-a-backup","title":"从备份还原"}],"documentType":"article"},"body":"# 从备份还原\n\n使用先前创建的备份快照还原GitHub Enterprise Server实例。\n\n可以使用命令行从备份还原 GitHub Enterprise Server 实例。 备份服务支持完整实例还原，包括配置和用户数据。\n\n> \\[!WARNING] 从备份中还原将会覆盖实例上的所有现有数据\\*\\*\\*\\*。 无法撤消此操作。\n\n## 快照版本要求\n\n仅当某个快照最多落后目标实例版本的两个功能版本时，才能还原该快照。\n\n例如：\n\n* 例如，版本 3.17 的快照可以还原到运行 3.17.x、3.18.x 或 3.19.x 的目标。\n* 不能将 3.17 的快照还原到 3.20，因为这已经超出了两个版本的范围。\n\n不能从较新版本还原到较旧版本。 例如，尝试将 3.18 快照还原到 3.17 实例将失败，出现以下错误信息：`Error: Snapshot can not be restored to an older release of GitHub Enterprise Server.`\n\n## Prerequisites\n\n还原备份前：\n\n1. 在目标实例上启用维护模式\\*\\*\\*\\*。 请参阅“[启用和排定维护模式](/zh/enterprise-server@3.18/admin/administering-your-instance/configuring-maintenance-mode/enabling-and-scheduling-maintenance-mode)”。\n2. 验证对包含快照的备份存储的访问权限\\*\\*\\*\\*。\n3. 暂停干扰服务 - 如果使用高可用性 (HA)，请确保已停止复制\\*\\*\\*\\*。\n4. **为 GitHub Actions 做好准备** — 如果启用了该功能，请确保目标实例已配置正确的外部存储。 有关详细信息，请参阅“[在启用GitHub Actions的情况下进行还原](/zh/enterprise-server@3.18/admin/backing-up-and-restoring-your-instance/restoring-with-github-actions-enabled)”。\n\n## 启动还原操作\n\n要从快照还原，请执行以下步骤：\n\n1. 以 `admin` 用户身份通过 SSH 登录目标实例。\n\n2. 运行下列命令之一：\n\n   * 最新快照恢复\n\n     ```shell\n     ghe-restore\n     ```\n\n   * 还原特定快照。 将 `<SNAPSHOT_TIMESTAMP>` 替换为要还原的快照的时间戳（例如 `YYYYMMDDTHHMMSS`）。\n\n     ```shell\n     ghe-restore -s <SNAPSHOT_TIMESTAMP>\n     ```\n\n   * （可选）覆盖备份中的设备配置、证书和许可证数据。 此选项 `-c` 不控制数据库或存储库还原：\n\n     ```shell\n     ghe-restore -c          # Latest snapshot\n     ghe-restore -s <SNAPSHOT_TIMESTAMP> -c  # Specific snapshot\n     ```\n\n3. **在管理控制台内完成：**\n\n   * 查看所有配置设置（网络、身份验证、TLS 等）。\n   * 单击“Save settings”，应用这些设置并启动服务\\*\\*\\*\\*。\n   * 只有完成此步骤后，实例才会完全正常运行。\n\n4. 验证还原的实例\\*\\*\\*\\*，确保一切按预期工作。\n\n5. 如果使用 HA\\*\\*\\*\\*，请先在独立实例上完成还原。 然后重新配置 HA。\n\n   * 如果遇到同步问题（例如 `ghe-repl-status` 中的过时 UUID），请运行 `ghe-repl-teardown`。\n   * 如需帮助，请联系 GitHub 支持。\n\n6. **重新注册自托管 GitHub Actions 运行器**，因为恢复操作会使之前的令牌失效。\n\n## 快照轮换和保留\n\n根据您的保留设置，快照会被自动修剪：\n\n* 仅保留最新的 n 个快照（根据配置）。\n* 每次成功备份后，都会删除较旧的快照。\n* 快照使用时间戳 (`YYYYMMDDTHHMMSS`) 进行命名，以便于参考。\n* 硬链接用于有效存储未更改的文件，同时保留完整还原功能。\n\n## 排查恢复失败问题\n\n如果还原操作失败，请检查以下项：\n\n* 备份完整性\\*\\*\\*\\* - 确保快照未中断或未损坏。\n* 存储访问\\*\\*\\*\\* - 验证实例是否可以装载和读取备份卷。\n* 版本不匹配\\*\\*\\*\\* - 确认快照版本与目标实例兼容。\n* 日志\\*\\*\\*\\* - 查看 `/var/log/github-backup/restore-verbose-[timestamp].log` 是否存在问题。\n\n管理控制台如果显示常规故障，请通过 SSH 连接到实例以访问详细日志。"}