gtilab主从备份的shell脚本,需要结合crontab定时任务(不包括gitlab安装部署)

一、gitlab主机的脚本(生成gitlab的备份文件,且传输到备份机服务器指定目录)

1、在gitlab主机上创建备份文件,并备份文件传到gitlab备用机服务器 (sh脚本文件)

docker exec -i gitlab gitlab-rake gitlab:backup:create  #执行备份操作,生成压缩包

cd /opt/gitlab/data/backups #进入挂载目录

backupName=$(ls -lt /opt/gitlab/data/backups | grep gitlab_backup.tar | head -n 1 |awk '{print $9}');

backupName=${backupName:0:28}  #根据规则截取备份包的文件名

echo ${backupName}

sshpass -p 要传输的服务器的主机密码 scp  "/opt/gitlab/data/backups/"$backupName"_gitlab_backup.tar" root@ip:"/opt/backups/gitlab/"$backupName"_gitlab_backup.tar"

 这里是用服务器crontab做定时执行上述脚本(主从的执行的时间是错开的,主机基本先执行,等主机执行完成之后,备机服务器执行备机的脚本,必须按照顺序),下面是我用的执行脚本

#编辑定时任务,没有crontab自己安装
crontab -e

#编辑定时任务(主机执行时间在前)
30 23 * * *   sh  /opt/gitlab/data/backups/gitlab_backup.sh

#查看可用的定时任务
crontab -l

二、gitlab从机的脚本(将gitlab主机考过来的备份文件传到gitlab的docker容器指定文件夹中,并且进入容器根据备份文件备份恢复)

2、将主机传过来的备份文件放到容器中去,在容器中执行还原操作 (sh脚本文件)

cd /opt/backups/gitlab

backupName=$(ls -lt /opt/backups/gitlab | grep gitlab_backup.tar | head -n 1 |awk '{print $9}');

backupName=${backupName:0:28}

echo ${backupName}

docker  cp  "/opt/backups/gitlab/"$backupName"_gitlab_backup.tar" gitlab:"/var/opt/gitlab/backups/"$backupName"_gitlab_backup.tar"

sleep 2

# 传到容器中之后将文件删除

rm -rf  "$backupName"_gitlab_backup.tar


#在宿主机执行在docker中命令的shell脚本需要按照该格式(也是脚本的一部分)

docker  exec  -i gitlab  /bin/bash -c 'cd  /var/opt/gitlab/backups  && chmod  777 '$backupName'_gitlab_backup.tar && yes yes|gitlab-rake gitlab:backup:restore BACKUP='$backupName' && rm -rf '$backupName'_gitlab_backup.tar'

备份机的定时任务执行上述脚本

#编辑定时任务,没有crontab自己安装
crontab -e

#编辑定时任务(备机执行时间在后)->>>>>>>>>>>>>>>>>>>>>>>请注意
45 23 * * *   sh  /opt/gitlab/data/backups/gitlab_backup.sh

#查看可用的定时任务
crontab -l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值