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:GitLb迁移
首先确保,两个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
然后出现第一个交互页面