计算机知识分享网

【gitlab】docker安装gitlab数据的自动备份

使用docker安装的gitlab版本

手动备份

因为采用docker安装,只有进入GitLab的docker容器(本例子名字为gitlab)内,有关于gitlab-rake gitlab:backup:create 命令只能在gitlab容器内使用,所以在手动备份时,需要进入容器。
docker exec -it gitlab的容器名字或者id bash
# 默认存放目录
/var/opt/gitlab/backup

# 执行备份命令
gitlab-rake gitlab:backup:create
 docker exec -t gitlab gitlab-rake gitlab:backup:create

可以在系统的/home/work/ins/data/gitlab/data/backups目录下会多一个“**.tar”的文件。这里指自己挂载的目录

利用crontab表达式 自动备份gitlab代码

1、crontab的常用命令介绍
/sbin/service crond start 服务启动
/sbin/service crond stop  服务停止
/sbin/service crond restart 服务重新启动
/sbin/service crond reload  服务重新加载配置

系统在root用户下,crontab -e 命令编辑设置定时任务。

2、设置cron服务开机启动

/etc/rc.d/rc.local脚本中加入/sbin/service crond start 即可。

3、cron基本格式介绍
*  *  *  *  *  command
分  时  日  月  周  命令

其中,
第1列表示分钟,1~59,每分钟用*表示
第2列表示小时,1~23,(0表示0点)
第3列表示日期,1~31
第4列表示月份,1~12
第5列表示星期,0~6(0表示星期天)
第六列表示要运行的命令。
4、GitLab自动备份

新建备份的sh文件:传递$1变量,在/root 下新建gitlab_backup.sh ,内容如下:

#! /bin/bash
case "$1" in 
    start)
            docker exec gitlab gitlab-rake gitlab:backup:create
            ;;
esac

测试 执行gitlab_backup.sh start,如果/home/work/ins/data/gitlab/data/backups 下有新生成的tar包,即可说明sh文件写对了。

新增定时任务:使用crontab -e 进入定时任务编辑界面,新增如下内容:

0 2 * * * /root/gitlab_backup.sh start

重新加载配置和启动或重启cron服务即可。

对于开机自启动cron服务,需要reboot验证。

定时将备份上传到另一台服务器

主要通过scp在Linux系统之间进行文件传输,scp是基于SSH登录的,需要我们进行免密码登录的操作。

1、安装sshpass
wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz 
tar xvzf sshpass-1.05.tar.gz 
# 进入解压后文件夹
./configure 
make 
make install
2、设置gitlab_upload.sh

/root 下新建gitlab_upload.sh ,内容如下:

#! /bin/bash
backdir='/home/work/ins/data/gitlab/data/backups'
latestFileName=`ls $backdir -t|head -n 1`

cd "$backdir"
sshpass -p [passwd] scp "$latestFileName" root@[hostID]

如: sshpass -p '123456' scp root@host_ip:/home/test/t ./tmp/ 执行脚本没问题,就可以,设置到crontab表达式中。

#Gitlab