Gogs生产环境搭建和数据迁移指南

在这里插入图片描述

说明

说明下gogs的搭建和迁移,搭建过程比较简单,资料也很多,不作为本文的重点。重点是说明一下如何迁移gogs,可以解决一下几个业务场景的迁移工作

  • 相同系统间的迁移 linux-liunx windows-windows
  • 不同系统之间的迁移 windows -> linux(本次案例)
  • 迁移数据库(sqlserver->mysql)

理解了迁移的过程,想怎么迁移就怎么迁移

gogs搭建

参考官方文档即可
https://gogs.io/docs/installation/install_from_binary

wget https://gogs.io/docs/installation/install_from_binary
tar -zxvf gogs_0.11.91_linux_amd64.tar.gz
## 启动
./gogs web &

请查看log确认启动成功

2020/04/28 14:27:09 [ INFO] Gogs 0.11.91.0811
2020/04/28 14:27:09 [ INFO] Cache Service Enabled
2020/04/28 14:27:09 [ INFO] Session Service Enabled
2020/04/28 14:27:09 [ INFO] Git Version: 1.8.3.1
2020/04/28 14:27:09 [ INFO] SQLite3 Supported
2020/04/28 14:27:09 [ INFO] Run Mode: Production
2020/04/28 14:27:09 [ INFO] Listen: http://0.0.0.0:3000

迁移命令说明

./gogs backup 备份

./gogs backup --help

 --config value, -c value   指定配置文件位置 path (default: "custom/conf/app.ini")
   --verbose, -v             查看过程
   --tempdir value, -t value  指定临时空间 (default: "/tmp")
   --target value             备份文件存储位置 (default: "./")
   --archive-name value        备份文件名字 (default: "gogs-backup-20200428143439.zip")
   --database-only            是否只迁移数据库
   --exclude-repos            不迁移那些仓库

./gogs restore 恢复

./gogs restore --help
OPTIONS:
   --config value, -c value   指定配置文件位置(default: "custom/conf/app.ini")
   --verbose, -v              查看过程
   --tempdir value, -t value  指定临时空间 (default: "/tmp")
   --from value               指定数据源(必须)
   --database-only            只迁移数据库文件
   --exclude-repos            不迁移那些仓库

Backup 备份操作实例

# 全部备份(常用)
 ./gogs bakcup
 
# 部分备份(数据太大时)
./gogs backup --exclude-repos

# 制定配置文件
./gogs backup --config=my/custom/conf/app.ini

Restore恢复

# 全部导入
./gogs restore  --config custom/conf/app.ini --from gogs-backup-20200428101740.zip 

# 只导入数据库文件
./gogs restore --database-only --config custom/conf/app.ini --from gogs-backup-20200428101740.zip 

–config custom/conf/app.ini 指定导入仓库用到的配置文件,否则使用压缩包中的默认配置文件
–database-only 只导入数据库

如何迁移数据库

例如如何把mysql数据库迁移到pgsql

方案:修改配置文件后,直接指定新的配置文件导入数据库。然后启动gogs

## 只备份数据库
./gogs backup --database-only

## 只导入数据库,配置文件指定新的数据库连接
./gogs restore --database-only --config custom/conf/app.ini --from gogs-backup-20200428101740.zip 

如何迁移单个仓库

需求:我需要把其他git的仓库迁移到gogs中,源仓库可能是gogs也可能是github,这种场景可以通过下面方法解决

方法1:代码操作

# 把旧仓库被分成本地git文件目录
git clone --mirror 旧的git地址

# 推动本地目录到新的地址
cd xxx.git
git push --mirror 新的git地址

以上就完成了单个仓库的迁移

方法2:UI界面操作,管理员登录gogs的管理界面,选择“迁移外部仓库”

在这里插入图片描述

排坑指南

坑1:

[FATAL] Failed to import 'custom': rename /tmp/gogs-backup/custom /data/gogs/gogs/custom: invalid cross-device link

原因:回复过程需要用到临时文件夹,默认的临时文件在/tmp下,但是我的系统/tmp和/data是两个硬盘,不能建立硬链接

解决: 指定–tempdir参数–tempdir /data/tmp

./gogs restore  --config app.ini --from gogs-backup-20200428101740.zip --tempdir /data/tmp

坑2 从winddows到linux用户名错误

报错需要administrator用户,linux系统没有这个用户

原因:从windows导出数据时默认配置文件的用户是administrator
解决:自定义配置文件后,通过–config app.ini 指定配置文件导入,参考上面例子

后记

还有一个场景暂时没找到合适的方法,就是如何直接合并两个gogs,暂时可以选择一个主仓库,把第二个仓库导入。如果实在需要可以考虑直接合并两个gogs的数据库文件,然后修改数据库的方式,这种方式有点风险,慎重选择

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值