Gitlab 備份/還原設定筆記
source link http://mycodetub.logdown.com/posts/260395-gitlab-backup-restore-settings-notes
這一陣子在熟悉使用 git 版本控制軟體之後,不免也會想要自己架設一個 git server 來存放自己平常工作的測試程式或休閒時間所寫的小 App。只不過 git server 的架設好像沒有像之前使用 VisualSVN Server 那麼容易,只要 下一步工程師 就可以完成。
後來有朋友推薦使用 GitLab 來架設 Git Server,也滿好用的。使用他提供的 omnibus 安裝,其實也是非常容易,只不過目前只有提供安裝在 Ubuntu, CentOS, 或 Debian 上而已。
好啦~講重點:
這份筆記的目的就是要防止萬一哪一天,架設 GitLab 的電腦硬碟掛點(畢竟我不是用高檔有 Raid 的 Server 所架設,只是用一般的PC),我存放在上面的心血結晶不會消失。所以需要他每天自動備份到另一台電腦,萬一哪天需要的時候可以及時還原。
假設:
- 我在 CodetubPC 上分享的資料夾名稱是 *** GitlabBackupFolder ***
- 有權限存取的 User 是
backupadmin
, 密碼是12345
- 在 CodetubUbuntu 上要將 windows 電腦分享的資料夾掛載到
/mnt/CodetubPC/GitlabBackupFolder
則我可以這樣做:
-
修改 GitLab 的設定檔
/etc/gitlab/gitlab.rb
搜尋
gitlab_rails[`backup_path`]
的內容修改成/mnt/CodetubPC/GitlabBackupFolder
仔細看裡面的設定,還可以設定備份的區間,太舊的會自動幫忙刪除。
-
執行以下指令,讓修改生效
-
將 CodetubPC 所分享的資料夾掛載到 /mnt/CodetubPC/GitlabBackupFolder
-
使用 root 的身份設定排成,定時備份
開啟編輯器後,將下面這行加入,這行的意思是代表每天的凌晨兩點進行備份。詳細的排成設定可以參考鳥哥的教學。
其中
gitlab-rake gitlab:backup:create
是代表要備份的意思。
如此一來,就完成了自動備份設定了。系統會在每天凌晨兩點自動幫你把整個 gitlab server 的資料打包備份起來。以備不時之需。
還原
當需要使用到還原時,記得要使用同一個版本的 Gitlab Server, 否則還原失敗的機率會很高!
- 首先當然是先安裝好你的 Gitlab Server
-
確認你有將備份檔案複製到
/var/opt/gitlab/backups
這個資料夾底下通常備份檔會長這樣 [TIMESTAMP]_gitlab_backup.tar
-
指定某一個 timestamp 並執行以下指令進行還原(timestamp 就是備份檔前面那串數字)
這樣就大功告成了!!
RECAPE
要做到備份 Gitlab 資料到遠端 windows 分享出來的資料夾,其實主要的設定:
- 修改
/etc/gitlab/gitlab.rb
內的gitlab_rails['backup_path']
以及gitlab_rails['backup_keep_time']
這兩個參數。 (backup_path 記得要指向等一下要掛載(mount)的路徑) - 執行指令
gitlab-ctl reconfigure
使修改生效。 - 使用 ubuntu 去掛載(mount) Windows 所分享出來的資料夾
- 使用 root 身份去增加排程固定時間執行 gitlab 備份指令。
要還原時主要步驟:
- 先安裝與之前備份時相同版本的 Gitlab
- 停止 gitlab 的服務
- 將要還原的備份檔放到
/var/opt/gitlab/backups/
位置 - 下指令指定要還原的 TIME_STAMP 備份檔
- 啟動 gitlab, Create satellites, Check gitlab … 完成