年前我的 NAS系統盤掛掉,數據倒是沒丟,但讓我的很多配置都要重來。

已經總結了:

剩下的其他就是應用數據的恢復和備份了。這裏再總結一下 Gogs 數據的備份和恢復。

之前使用的是 Qnap club 上面 qpkg 文件來安裝的 Gogs, 這次遷移到 Docker 中。

Gogs 的主要數據和其他很多應用類似,主要是數據庫和本地配置文件。

數據庫備份

關於 MySQL 數據庫的備份就不再多說了,之前也有總結過文章。

本地數據

使用 qpkg 文件安裝的 QNAP 應用都會將數據存儲在 /share/CACHEDEV1_DATA/.qpkg/ 目錄下,找到該目錄下的 /share/CACHEDEV1_DATA/.qpkg/Gogs/ 文件夾,如果不知道要備份該目錄下的哪一個文件,笨辦法就是把整個目錄打包備份。

不過如果簡單的查看一下 Gogs 的 Docker 鏡像使用 就知道

# Pull image from Docker Hub.
$ docker pull gogs/gogs

# Create local directory for volume.
$ mkdir -p /var/gogs

# Use `docker run` for the first time.
$ docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs

# Use `docker start` if you have stopped it.
$ docker start gogs

在 Gogs 的 Docker 鏡像中 Gogs 只掛載了 /data 目錄,所有的數據都保存在該目錄中。

/var/gogs
|-- git
|   |-- gogs-repositories
|-- ssh
|   |-- # ssh public/private keys for Gogs
|-- gogs
	|-- conf
	|-- data
	|-- log

觀察該目錄,就能看到主要是三個目錄,結構一目瞭然。但是 QNAP 應用中結構就不那麼清晰了。

/git/gogs-repositories 目錄對應着 /home/gogs-repositories 目錄,裏面保存着所有 git 倉庫文件。等啓動 Docker 容器後,可以將該目錄中的文件全部拷貝到 Docker 容器掛載的目錄,比如我就是 /share/gogs/git 目錄。

拷貝後可能還有權限問題,使用 chown user:group -R * 來解決一下(這裏的 user group 要換成你係統中對應的)。

另外注意 /gogs/conf/ 目錄下的配置文件,這是一個全局的配置,非常重要。

ERROR

Docker 啓動過程中可能遇到如下錯誤:

error: kex_exchange_identification: client sent invalid protocol identifier

初步判斷就是 Docker 端口配置錯誤,我之前配置 的 Gogs 服務,監聽的兩個端口分別是 10080 和 10022,所以在 Container Station 中配置的時候改一下即可。

External

Gitea 是一個 Gogs 的社區 fork,看 對比 是一個 Gogs 極好的代替品。

相關文章