gitlab docker容器部署方式的主从备份(lunix crontab定时任务的形式执行)

docker安装gitlab这里不做详细讲述,自行百度

这里用到crontab,如果服务器系统没有安装的话可以自己自行百度安装(主从机器都要执行脚本)

#编辑定时任务
crontab  -e
# 进入到crontab定时任务编辑界面
30 23 * * *  sh /var/backup.sh

参数说明:   cron表达式   sh  执行的脚本目录

一、主机上的shell脚本

#创建备份文件重复
docker exec -i gitlab gitlab-rake gitlab:backup:create

#这里是gitlab 容器中备份文件再宿主机的挂载目录(根据自己情况来)
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}

#这里就开始进行从主机将备份文件复制到备用gitlab宿主机上
sshpass -p 123456 
scp  "/opt/gitlab/data/backups/"$backupName"_gitlab_backup.tar"  root@192.168.180.xxx:"/opt/backups/gitlab/"$backupName"_gitlab_backup.tar"



说明:-p xxx备用机密码
    scp 复制主机的文件(确保目录的正确)
    用户名@备用机ip:"复制到备用的压缩文件(含目录)"

#如果怕占用服务器空间,备份文件复制完成之后,可以将主机的备份文件删除

二 备用机shell脚本

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

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'




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值