备份脚本
cat /usr/local/sbin/gitlab_backup.sh
#!/bin/bash
/usr/bin/gitlab-rake gitlab:backup:create CRON=1
cd /etc/gitlab/backup/
newfile=`ls -lt |grep -v "total"| head -n 1 | awk '{print $9}'`
cp newfile /imgdata/backup/gitlab/
function Del_oldbak(){
cd $1
total_file_num=`ls -l| wc -l`
if [ $total_file_num -gt 5 ];
then
num=`expr $total_file_num - 5`
files=`ls -ltr |grep -v "total"| awk '{print $9}' | head -n $num`
echo $files | xargs rm -f
fi
}
Del_oldbak /etc/gitlab/backup/
Del_oldbak /imgdata/backup/gitlab/
更改Gitlab备份目录
当然你也可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
修改完成之后使用下面命令重载配置文件即可.
gitlab-ctl reconfigure
Gitlab的恢复
GItlab只能还原到与备份文件相同的gitlab版本。
假设在上面gitlab备份之前创建了test项目,然后不小心误删了test项目,现在就进行gitlab恢复操作:
1、停止相关数据连接服务
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq
查看gitlab状态
gitlab-ctl status
2、通过之前的备份文件进行恢复(这里备份路径我自定义的/data/gitlab/backups,默认的是/var/opt/gitlab/backups)
Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复
gitlab-rake gitlab:backup:restore BACKUP=/data/gitlab/backups/1557136073_2019_05_06_11.10.4
最后再次启动Gitlab
gitlab-ctl start
查看gitlab状态
gitlab-ctl status
恢复命令完成后,可以check检查一下恢复情况
gitlab-rake gitlab:check SANITIZE=true
然后稍等一会(如果启动gitlab后,访问出现500,这是因为redis等程序还没完全启动,等一会儿访问就ok了),再次登录Gitlab,就会发现之前误删除的test项目已经恢复了!