Gitlab備份,Crontab定時備份


 

1:Gitlab備份非常簡單,只需要一條命令就可以創建完整的備份

gitlab-rake gitlab:backup:create

使用以上命令,就相當於在/var/opt/gitlab/backups/文件夾下創建了一個類似於1542596619_2018_11_19_9.2.1_gitlab_backup.tar的壓縮文件,這個壓縮包就是Gitlab所有的完整文件,1542596619_2018_11_19是備份的日期9.2.1是Gitlab的版本,如果你要從Gitlab遷移至Gitlab,請注意遷移的版本和目前的版本是否一致。

創建完成后,在/var/opt/gitlab/backups/已經創建好備份文件了

2:更改Gitlab備份目錄

當然,你可以通過/etc/gitlab/gitlab.rb來修改備份的目錄

# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

修改成

gitlab_rails['backup_path'] = "/disk/gitlab/backup"

修改完成之后,使用下面的命令可以重新加載配置文件

gitlab-ctl reconfigure

3:Gitlab自動定時備份

在crontab文件里面,每一行代表一項任務,每行的每個字段代表一項設置,它的格式共分為六個字段,前五段是時間設定段,第六段是要執行的命令段,每個字段之間用空格分割,沒用的段用*代替,格式如下:

m h dom mon dow user command

其中:

  • m: 表示分鍾,可以是從0到59之間的任何整數。
  • h:表示小時,可以是從0到23之間的任何整數。
  • dom:表示日期,可以是從1到31之間的任何整數。
  • mon:表示月份,可以是從1到12之間的任何整數。
  • dow:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
  • user : 表示執行的用戶。
  • command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件(如shell文件)。

實現每天凌晨2點進行一次自動備份:通過crontab使用備份命令實現,需重啟cron服務
方法1、在命令行輸入: crontab -e 然后添加相應的任務,wq存盤退出。

#輸入命令crontab -e
sudo crontab -e  
#輸入相應的任務 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  

方法2、直接編輯/etc/crontab 文件,即vi /etc/crontab,然后添加相應的任務

#編輯 /etc/crontab
vi /etc/crontab 

然后再編輯框內輸入相應的任務

# edited by ouyang 2017-8-11 添加定時任務,每天凌晨兩點,執行gitlab備份
0  2    * * *   root    /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  

或者直接定時執行一個腳本 auto_backup.sh ,腳本內容為

/opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

然后再 /etc/crontab中,添加相關任務定時執行 auto_backup.sh 腳本文件

sudo chmod +x auto_backup.sh
sudo vim auto_backup.sh

/etc/crontab 中添加執行腳本的定時任務,代碼如下:

#也可以按照如下所示的方法,定時執行 auto_backup.sh腳本,腳本內容就填寫: /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 
0 2    * * *   root    /data/gitlabData/backups/auto_backup.sh -D 1  

編寫完 /etc/crontab 文件之后,需要重新啟動cron服務

#重新加載cron配置文件
sudo /usr/sbin/service cron reload
#重啟cron服務
sudo /usr/sbin/service cron restart 

實際運行如下

root@ubuntu4146:~# sudo /usr/sbin/service cron reload
root@ubuntu4146:~# sudo /usr/sbin/service cron restart 
cron stop/waiting
cron start/running, process 17738

4:設置備份過期時間

設置只保存最近7天的備份,編輯 /etc/gitlab/gitlab.rb 配置文件,找到gitlab_rails[‘backup_keep_time’],設置為你想要設置的值,然后保存。

gitlab_rails['backup_keep_time'] = 604800  

5:Gitlab遷移

首先確保,兩個Gitlab的版本是一致的,然后把文件上傳到新的Giltab服務器上

賦予備份文件權限

chmod 777 1542596619_2018_11_19_9.2.1_gitlab_backup.tar

停止相關的服務

# 停止相關數據連接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

執行命令從備份中恢復到Gitlab

gitlab-rake gitlab:backup:restore BACKUP=備份文件編號

比如我們的是1542596619_2018_11_19_9.2.1_gitlab_backup.tar,那編號就是1542596619_2018_11_19_9.2.1

gitlab-rake gitlab:backup:restore BACKUP=1542596619_2018_11_19_9.2.1

然后出現第一個交互頁面

root@ubuntu4146:/var/opt/gitlab/backups# gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3
Unpacking backup ... done
Before restoring the database we recommend removing all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.

Do you want to continue (yes/no)? 

過程中出現交互頁面,都輸入yes繼續執行,完成后開啟Gitlab服務

sudo gitlab-ctl start

查看老、新Gitlab服務數據是否一致。



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM