拓冰建站拓冰建站
首页 / 资讯中心 / 正文

如何使用 gogs backup 与 gogs restore 把 Gogs 实例整体迁移到另一台服务器

如何使用 gogs backup 与 gogs restore 把 Gogs 实例整体迁移到另一台服务器【免费下载链接】gogsThe painless way to host your own Git service项目地址: https://gitcode.com/GitHub_Trending/go/gogs如果你需要把一台 Gogs 服务器上的全部内容数据库、仓库、附件、SSH 目录、自定义配置等搬到另一台机器Gogs 自带的gogs backup与gogs restore两条命令就是为这个场景设计的。CLI reference 中明确写道backup会把数据库、仓库和相关文件打进一个 zip 归档restore再从归档中完整导入which is useful for migrating Gogs to another server or switching database engines。操作流程是在源机器执行gogs backup生成归档 → 把 zip 传到目标机器 → 在目标机器执行gogs restore --from archive→ 启动gogs web验证。前提条件只有一个硬性限制目标机器的 Gogs 版本必须大于或等于备份包里的版本restore 命令说明原文The backup version must lower or equal to current Gogs version。此外所有命令都支持--config-c指定自定义配置文件默认是custom/conf/app.ini。备份包里有什么了解归档结构有助于迁移后核对完整性。根据 备份命令源码gogs backup生成的 zip 内包含以下部分gogs-backup/metadata.ini备份格式版本当前为 1、备份时间、Gogs 版本号gogs-backup/db/数据库各表以 JSON Lines 格式逐表导出这种格式与数据库引擎无关因此可以用来在不同数据库引擎之间迁移gogs-backup/custom/custom 目录下的全部文件含conf/app.ini其中的data子目录除外gogs-backup/data/应用数据目录下的ssh、attachments、avatars、repo-avatars目录不存在的会被跳过gogs-backup/repositories.zip[repository.root]下所有仓库的裸 Git 数据。在源机器上执行 gogs backup在运行 Gogs 的那台机器上执行所有命令的默认配置文件路径为custom/conf/app.inigogs backup --target ./migration --archive-name gogs-migration.zip参数说明--target归档保存的目录默认./--archive-name归档文件名默认是带时间戳的gogs-backup-时间戳.zip这里显式指定名字便于传输时辨认--verbose-v打印处理细节--tempdir-t临时目录默认系统临时目录。如果实例的配置文件不在默认位置追加--config /path/to/app.ini。命令成功结束时终端会输出见 cmd/gogs/backup.go 中的日志逻辑Backup succeed! Archive is located at: ./migration/gogs-migration.zip此时检查./migration/目录下存在gogs-migration.zip且大小非零即表示备份完成。将归档传到目标机器把 zip 包传输到目标服务器即可scp、内网拷贝等任意方式均可。归档自包含不依赖源机器上的其他路径。在目标机器上执行 gogs restore目标机器需要满足已安装 Gogs版本不低于备份时的版本已经配好 示例配置 对应的app.ini主要是可用的数据库连接因为 restore 会依据配置连接数据库并导入数据。执行gogs restore --from ./gogs-migration.zip--from是备份归档的路径见 restore 命令源码。关于配置文件有一个容易踩的坑backup 会把custom/目录含app.ini打进归档restore 时如果你没有传--config它就使用归档内的app.ini来初始化。如果目标机器的数据库连接、监听地址等与原机器不同必须显式指向目标机器自己的配置gogs restore --from ./gogs-migration.zip --config ./custom/conf/app.ini如果归档里恰好没有 custom 配置则不传--config会直接报错退出这也是同样的处理方式。restore 的实际行为依据 cmd/gogs/restore.go校验metadata.ini备份的GOGS_VERSION必须不超过当前 Gogs 版本备份格式版本必须与二进制支持的版本一致当前为 1否则直接报错终止导入数据库归档中存在的表会先删表再重新导入归档中不存在的表保持不动归档中存在、而目标机器上已存在的custom/目录和attachments、avatars、repo-avatars目录会先改名为*.bak再被归档内容替换最后把repositories.zip解压到仓库根目录[repository.root]的父级。命令成功结束时输出Restore succeed!。启动并验证恢复完成后正常启动服务gogs webweb是启动 HTTP 服务器的命令承载 Web UI、REST API 和 Git over HTTP。启动后登录 Web 界面确认原有账号可以登录、仓库列表与迁移前一致即说明整体迁移完成。可选的范围控制参数两条命令都支持用参数收窄范围来源CLI reference 与 cmd/gogs/backup.go参数适用命令用途--database-onlybackup / restore只导出/导入数据库不动文件。适合只换数据库引擎的迁移这也是 CLI 文档点名的另一个用途--exclude-reposbackup / restore不包含仓库数据--exclude-mirror-repos仅 backup排除镜像仓库只打包非镜像仓库--verbosebackup / restore打印过程细节需要强调对整体迁移这个目标默认不带任何排除参数就是正确的主路径上表参数用于缩减范围误加--exclude-repos会导致仓库数据缺失。限制与核对方式版本方向是单向的目标机器必须 ≥ 源机器版本跨格式版本的归档会被拒绝并提示最后支持导入该格式的版本号每条命令都可以运行gogs command --help查看该版本下的完整参数列表CLI 文档建议的核对方式恢复过程中任何一步失败都会以log.Fatal立即终止并打印失败原因如Failed to import database、Failed to extract backup archive此时目标机器的对应目录大多已有.bak备份可回滚重新核对配置后再执行 restore 即可。【免费下载链接】gogsThe painless way to host your own Git service项目地址: https://gitcode.com/GitHub_Trending/go/gogs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门