gogs server移轉及備份還原

因為建置了新的NAS,要將原本在raspberry-pi上架設的gogs server移轉到新的NAS中,經過一段測試及試驗後,終算是完成了移轉,趁記憶猶新時,先將這些資料筆記下來供自己及其它有需要的人來參考

移轉前確認

在移轉前可以先確認是否還能存取到原gogs server上的資料,預計需要的有:

  • 資料庫:看你是用postgresql還是sqlite。如果是sqlite,因為它是檔案型的資料庫,要確保你還能存取到原本的資料庫檔案
  • git倉庫:所有你原本的各git專案的儲存檔案
  • 可用ssh登入:最好確保你還能有ssh的登入權限及方式,以便在移轉時可以用scp指令來複製上述兩項資料

建置新的gogs server

你可以先在未來要使用的主機(或NAS)中建置一個全新的gogs server。我這邊建置的方式是在NAS中用docker的模式來建置。

首先下載gogs官方的docker

docker pull gogs/gogs

建置一個volume,以便用來給gogs docker掛載使用及儲存變動性資料,例如sqlitedb、git倉庫。最重要的是,它可以用來設定ssh登入的public key。方便你可以直接用host的帳號來登入。

設定好後,先啟動這組新的gogs server,並進行基本的設定,如果你原本是使用sqlite db,那這組新的gogs server也要使用相同的資料庫型式。這樣才能還原原本的資料。

設置好後,會發現它的/data目錄中有個git子目錄,因gogs server都是使用git這個使用者帳號來執行所有服務的,所以/data/git 這個目錄,其實就是git這個帳號的家目錄。在git的家目錄中,可以看到.ssh的隱藏子目錄,這個目錄中可以用來設定ssh無密碼登入的方式。

在/data/git/.ssh中新增一個authorized_keys的檔案,並將你目前使用的本機帳號的public key資料加入到authorized_keys檔案中,這樣未來你就可以直接用ssh及scp方式來存取這組新的gogs server了。

還原資料

要還原舊的gogs server到新的gogs server中,主要要複制的是兩個目錄:

  • /data/gogs/data
  • /data/git/gogs-repositories

首先要先登入到舊gogs server的shell中,再用以下指令將原gogs server資料複製到新gogs server中:

cd <舊gogs server的data目錄>
scp -P 11022 .\data\gogs.db git@<new ip>:\data\gogs\data
cd <舊gogs server的repositories目錄>
scp -P 11022 -r ./* git@localhost:/data/git/gogs-repositories

複製完成後,再動啟新的gogs server,應該就可以看到原本的資料了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *