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

則我可以這樣做:

  1. 修改 GitLab 的設定檔 /etc/gitlab/gitlab.rb

    搜尋 gitlab_rails[`backup_path`] 的內容修改成 /mnt/CodetubPC/GitlabBackupFolder

    仔細看裡面的設定,還可以設定備份的區間,太舊的會自動幫忙刪除。

  2. 執行以下指令,讓修改生效

    gitlab-ctl reconfigure
    gitlab-ctl restart
    
  3. 將 CodetubPC 所分享的資料夾掛載到 /mnt/CodetubPC/GitlabBackupFolder

    MOUNT_POINT=/mnt/CodetubPC/GitlabBackupFolder
    SHARE_FOLDER=//CodetubPC/GitLabBackupFolder
    DOMAIN=CodetubPC
    USERNAME=backupadmin
    PASSWORD=1234
    
    mount -t cifs $SHARE_FOLDER $MOUNT_POINT -o username="$USERNAME",password="$PASSWORD",domain="$DOMAIN",iocharset=utf8,file_mode=0777,dir_mode=0777,guest
    // 這裡你也可以不用 guest, 可以使用 gid=xxxx 或 uid=xxxx 來指定給某個群組或個人, guest 只是比較偷懶的作法
    // 如果遇到失敗可以檢查一下是否有套件沒裝到,再使用 apt-get install 安裝
    // apt-get install nfs-common
    // apt-get install cifs-utils
    
  4. 使用 root 的身份設定排成,定時備份

    $sudo su // 切換到 root 身份
    #crontab -e // 設定排成
    

    開啟編輯器後,將下面這行加入,這行的意思是代表每天的凌晨兩點進行備份。詳細的排成設定可以參考鳥哥的教學

    0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
    

    其中 gitlab-rake gitlab:backup:create 是代表要備份的意思。

如此一來,就完成了自動備份設定了。系統會在每天凌晨兩點自動幫你把整個 gitlab server 的資料打包備份起來。以備不時之需。

還原

當需要使用到還原時,記得要使用同一個版本的 Gitlab Server, 否則還原失敗的機率會很高!

  1. 首先當然是先安裝好你的 Gitlab Server
  2. 確認你有將備份檔案複製到 /var/opt/gitlab/backups 這個資料夾底下

    通常備份檔會長這樣 [TIMESTAMP]_gitlab_backup.tar

    sudo cp 1393513186_gitlab_backup.tar /var/opt/gitlab/backups/
    
  3. 指定某一個 timestamp 並執行以下指令進行還原(timestamp 就是備份檔前面那串數字)

    // 停止 gitlab 的服務
    sudo gitlab-ctl stop unicorn
    sudo gitlab-ctl stop sidekiq
    // 這一部要指定某個備份檔進行還原
    sudo gitlab-rake gitlab:backup:restore BACKUP=1393513186
    // 啟動 gitlab
    sudo gitlab-ctl start
    // Create satellites
    sudo gitlab-rake gitlab:satellites:create      
    // Check GitLab
    sudo gitlab-rake gitlab:check SANITIZE=true
    

這樣就大功告成了!!

RECAPE

要做到備份 Gitlab 資料到遠端 windows 分享出來的資料夾,其實主要的設定:

  1. 修改 /etc/gitlab/gitlab.rb 內的 gitlab_rails['backup_path'] 以及 gitlab_rails['backup_keep_time'] 這兩個參數。 (backup_path 記得要指向等一下要掛載(mount)的路徑)
  2. 執行指令 gitlab-ctl reconfigure 使修改生效。
  3. 使用 ubuntu 去掛載(mount) Windows 所分享出來的資料夾
  4. 使用 root 身份去增加排程固定時間執行 gitlab 備份指令。

要還原時主要步驟:

  1. 先安裝與之前備份時相同版本的 Gitlab
  2. 停止 gitlab 的服務
  3. 將要還原的備份檔放到 /var/opt/gitlab/backups/ 位置
  4. 下指令指定要還原的 TIME_STAMP 備份檔
  5. 啟動 gitlab, Create satellites, Check gitlab … 完成

Reference

 

Read more

How to document Home Lab and Network

運維機房和跨域的網路,會遇到各式需求與問題,用對工具才能分析問題,個人覺得最重要的是使用能處理問題的工具。 推薦目前想學和正在使用的平台與軟體,協助將公司/家用機房文件化 佈告欄任務管理 Focalboard 白板可管理任務指派 網路架構文件編寫 netbox 精細管理網路設備與連接線路 IP 資源管理 phpipam 專注網路IP分配 邏輯塊文件編寫 draw.io 視覺化概念圖 機房設備管理 ITDB 管理設備生命週期與使用者

By Phillips Hsieh

如何在Raspberry Pi4上安裝Proxmox for ARM64

第一步 準備好Raspberry Pi 4 / CM4 4GB RAM,這裡要留意CM4如果是買有內建eMMC storage會限制不能使用SD卡開機而限制本地空間容量,如果沒有NAS外接空間或使用USB開機的話,建議買CM4 Lite插上大容量SD卡 第二步 去Armbian官網下載最小化Debian bookworm image https://www.armbian.com/rpi4b/ Armbian 25.2.2 Bookworm Minimal / IOT 然後寫入SD/USB開機碟,寫入方法參考官方文件 https://github.com/raspberrypi/usbboot/blob/master/Readme.md Note: 官方提供的預先設定系統方法,可以在Armbian初次啟動自動化完成系統設定。連結在此 https://docs.armbian.com/User-Guide_Autoconfig/

By Phillips Hsieh

世界越快心越慢

在晚飯後的休息時間,我特別享受在客廳瀏灠youtube上各樣各式創作者的影音作品。很大不同於傳統媒體,節目多是針對大多數族群喜好挑選的,在youtube上我會依心情看無腦的動畫、一些旅拍記錄、新聞時事談論。 尤其在看了大量的Youtube的分享後,我真的感受到會限制我的是我的無知,特別是那些我想都沒想過的實際應用,在學習後大大幫助到我的生活和工作層面。 休息在家時,我喜歡想一些沒做過的菜,動手去設計生活和工作上的解決方案,自己是真的很難閒著沒事做。 如創作文章,陪養新的習慣都能感覺到成長的喜悅,是不同於吃喝玩樂的快樂的。 創作不去限制固定的形式,文字是創作、影像聲音也是創作,記錄生活也是創作,我想留下的就是創造—》實現—》回憶,這樣子的循環過程,在留下的足跡面看到自己一路上的成長、失敗、絕望、重新再來。 雖然大部份的時候去做這些創作也不明白有什麼特別的意義,但不去做也不會留下什麼,所以呀不如反事都去試試看,也許能有不一樣的水花也許有意想不到的結果,投資自己永遠不會是失敗的決定,不是嗎?先問問自己再開始計畫下一步,未來沒人說得準。 像最近看youtube仍大一群人在為DOS開

By Phillips Hsieh

知識管理的三個步驟:一小時學會把知識運用到生活上

摘錄瓦基「閱讀前哨站」文章作為自己學習知識管理的內容 Part1「篩選資訊」 如何從海量資訊中篩選出啟發性、實用性和相關性的精華,讓你在學習過程中不再迷失方向。 1. 實用性 2. 啟發性 Part2「提高理解」 如何通過譬喻法和應用法,將抽象的知識與日常生活和工作緊密結合,建立更深刻的理解。 1. 應用法 2. 譬喻法 Part3「運用知識」 如何連結既有知識,跟自己感興趣的領域和專案產生關聯,讓你在運用知識的路途上游刃有餘。 1. 跟日常工作專案、人際活動產生連結 # 為什麼要寫日記? * 寫日記是為了忘記,忘卻瑣碎事情,保持專注力 * 寫日記就像在翻譯這個世界,訓練自己的解讀能力 * 不只是透過日記來記錄生活,而是透過日記來發展生活 #如何寫日記? * 不要寫流水帳式的日記,而是寫覆盤式的日記 當我們試著記錄活動和感受之間的關聯,有助於辦認出真正快樂的事 日記的記錄方式要以過程為主,而非結果 * 感恩日記的科學建議,每日感恩的案例

By Phillips Hsieh