GitLab定时备份

GitLab定时备份

文章目录

  • GitLab定时备份
    • GitLab基础环境
    • 备份命令
    • 自动清理备份
    • 上传命令
    • 设置定时任务
    • 参考链接

GitLab基础环境

部署方式:Docker

版本:16.2.2

备份命令

Notes:

  • 编写sh脚本时,不要使用Windows上的Notepad++类似编辑器,执行时可能会出现语法错误,直接通过touchvim命令编辑即可
  • 注意赋予可执行权限:chmod +x gitlab_backup.sh

gitlab_backup.sh

#! /bin/bash
docker exec gitlab gitlab-rake gitlab:backup:create

自动清理备份

gitlab_delete.sh

#! /bin/bash
find /home/data/apps/gitlab/data/backups/ -type f -mtime +7 -name "*.tar" -exec rm -rf {} \;

寻找并删除 /home/data/apps/gitlab/data/backups/目录下内容修改时间(mtime)为7天以前的tar文件(-type f),并删除(rm -rf)

上传命令

备份后需要将文件传送至其他服务器。

Notes:

  • 通过scp命令实现远程复制,可以设置ssh公钥实现免密登录远端服务器,设置步骤参考最后链接。
  • 复制前要保证远端服务器已经存在指定的目录

gitlab_upload.sh

#! /bin/bash
backdir='/home/data/apps/gitlab/data/backups'
latestFileName=`ls $backdir -t|head -n 1`
cd "$backdir"
scp "$latestFileName" [email protected]:/data/apps/gitlab/backups
ssh [email protected] "find /data/apps/gitlab/backups -type f -mtime +7 -exec rm -f {} \;"

设置定时任务

crontab -e
10 0 * * * /data/gitlab/cron/gitlab_backup.sh > /tmp/cron.log 2>&1
20 0 * * * /data/gitlab/cron/gitlab_upload.sh > /tmp/cron.log 2>&1
30 0 * * * /data/gitlab/cron/gitlab_delete.sh > /tmp/cron.log 2>&1

每天的零点10分自动备份,零点20分自动将最新备份文件上传至远端服务器,零点30分自动删除7天前的备份

参考链接

  • docker部署GitLab配置本机自动备份、自动清理
  • gitlab定时备份
  • linux添加ssh公钥免密登录

你可能感兴趣的:(GIT,gitlab,备份,cron)