Gogs数据恢复(docker)
由于误将gogs docker镜像损坏了,导致gogs无法正常运行。
研究了半天,大概总结如下:
一、先找到挂载的目录
gogs镜像在run的时候会映射data文件在本地。所有文件都在里面,找到它就可以了。
需要全局搜索文件位置:
cd /
find -name gogs
我的文件就在var/gogs/ 目录下面。
二、找到并确认相关文件
找到的目录应该是如下结构的:
/var/gogs
|-- git
| |-- gogs-repositories(git项目仓库)※
|-- ssh
| |-- ssh public/private keys for Gogs(gogs 有关git的秘钥信息)※
|-- gogs
|-- conf
|-- app.ini gogs的配置文件(用来参考新安装的gogs如何配置)
|-- data
|-- gogs.db gogs的用户资料数据库(之前用的是sqlite数据库)※
|-- log
我们需要的文件如下:
git/gogs-repositories/: 用户提交的详细代码信息都在这里。
ssh/: gogs 有关git的秘钥信息,有了这个新安装后,用户就可以不用重新配git密钥了。
gogs/data/gogs.db: 用户账号信息。
ps:
关于数据库,查看配置文件确定使用的是何种数据库。使用的是其他数据库的请自行研究对应数据库恢复或连接,(我感觉sqlite挺方便的,所有用户信息都保存在一个文件,不用考虑重装数据库)
接下来很简单,只需装一个新的gogs,然后把上面的文件拷贝到对应位置就可以了。
三、重新拉取镜像并启动docker
1.找到相同版本的gogs镜像(一定要相同版本)
注意不同版本可能数据结构等有变化会不兼容。
gogs各个版本信息见
找不到见官网最新信息:https://gogs.io/
2.安装新的gogs
详细就不说了,见github 教程:
https://github.com/gogs/gogs/tree/main/docker
四、替换第二步理出来的文件
cp命令就不细说了,或者使用ssh工具或者宝塔之类的linux管理软件操作即可。
复制完重启gogs-docker即可。