docker部署的GitLab代码自动备份

 

一、前提

之前使用docker部署了一个GitLab,其容器启动时的参数如下:

# docker run -d --hostname gitlab.example.com\

    -p 443:443 -p 8181:80 -p 2222:22 \

    --name gitlab \

    --restart always \

    -v /srv/gitlab/config:/etc/gitlab \

    -v /srv/gitlab/logs:/var/log/gitlab \

    -v /srv/gitlab/data:/var/opt/gitlab \

    -v /etc/localtime:/etc/localtime

    gitlab/gitlab-ce:latest

 

现在想实现GitLab的自动备份。

系统是centos7


二、手动备份

因为采用docker安装,只有进入GitLab的docker容器(本例子名字为gitlab)内,有关于gitlab-rake gitlab:backup:create 命令只能在gitlab容器内使用,所以在手动备份时,需要进入容器。

 

docker exec -it gitlab bash 

 

gitlab-rake gitlab:backup:create

可以在系统的/srv/gitlab/data/backups目录下会多一个“**.tar”的文件


三、自动备份

我们利用crontab定时执行任务,cron服务是Linux的内置服务,但是其不会自动开机启动。

1、cron服务的启停

/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文件:在/root 下新建gitlab_backup.sh ,内容如下:

#! /bin/bash

case "$1" in

    start)

            docker exec gitlab gitlab-rake gitlab:backup:create

            ;;

esac

 

测试 执行gitlab_backup.sh start,如果/srv/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

此时sshpass安装完成。

2、设置gitlab_upload.sh

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

#! /bin/bash

backdir='/srv/gitlab/data/backups'

latestFileName=`ls $backdir -t|head -n 1`

 

cd "$backdir"

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

定时任务的设定同上。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值