• gitlab自动定时备份文件,备份失败发送邮件


     


    一、需求

    为预防gitlab出现故障,每天定时备份,备份完成后把之前的备份文件删除,备份成功或失败的时候自动发送邮件提醒,这里的gitlab为docker部署。

    二、备份命令准备

    1)备份命令

     创建一个 gitlab_auto_backup.sh文件,文件内容

    复制代码
    #!/bin/bash
    
    # 进入GitLab容器并执行备份 --gitlab为docker名称
    docker exec -t gitlab gitlab-backup create
    
    # 查找并删除1天前的备份文件 /home/gitlab/opt/backups/ 为docker挂载data的目录
    find /home/gitlab/opt/backups/ -type f -mtime +1 -name "*.tar" -exec rm -rf {} \;
    复制代码

    把gitlab_auto_backup.sh文件放到服务器上,这里放到目录  /home/gitlab/gitlab_auto_backup.sh

    给权限

    chmod +x /home/gitlab/gitlab_auto_backup.sh

    2)让备份命令定时自动执行

    使用linux的cron来定时执行上面创建的命令脚本文件,vi /etc/crontab 打开 crontab文件

    每天零晨2点执行

     

    3)linux服务器邮件发送配置

    配置发送邮件服务

    安装mailx sendmail,如果已安装会提示已经安装,没安装会自动安装

    yum install -y mailx sendmail

    查看Active的状态

    systemctl status sendmail

    如果active(running)正常,如果为dead则需要启动服务,启动命令

    systemctl start sendmail

    配置服务 /etc/mail.rc,以163邮箱为例

    #打开配置文件
    vi /etc/mail.rc

    编辑配置文件增加配置

    set from=xxxx@163.com #邮箱
    set smtp=smtp.163.com #smtp地址
    set smtp-auth-user=xxxx@163.com
    set smtp-auth-password=授权码 #不是邮件的密码,是申请smpt发送邮件的授权码
    set smtp-auth=login

    邮件发送测试

    1、直接发送内容

    发送内容:test content

    标题:test title

    收件人:123456@qq.com

    echo "test content" | mail -s "test title" 123456@qq.com

     

     2、使用文件内容作为邮件内容发送

    把 /tmp/test.txt的内容作为邮件内容发送

    mail -s "test title" 123456@qq.com < /tmp/test.txt

     4)备份成功失败发送邮件

    修改备份命令,增加发送邮件。gitlab_auto_backup.sh完整内容替换为:

    复制代码
    #!/bin/bash
    
    # 进入GitLab容器并执行备份
    docker exec -t gitlab gitlab-backup create
    
    # $?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败,注间中括号前后有一个空格
    if [ $? -eq 0 ];then
       echo "gitlab备份成功" | mail -s "gitlab备份成功" 123456@qq.com
    else
       echo "gitlab备份失败" | mail -s "gitlab备份失败" 123456@qq.com
    fi
    # 查找并删除1天前的备份文件
    find /home/gitlab/opt/backups/ -type f -mtime +1 -name "*.tar" -exec rm -rf {} \;
    复制代码

    手动执行gitlab_auto_backup.sh文件测试效果

    #执行备份命令
    /home/gitlab/gitlab_auto_backup.sh

     完成!

     

  • 相关阅读:
    基础-MVP图像处理-图像运算算子
    Java零基础(从0到1)---》控制语句
    【完美世界】石昊再借刀斩人,连杀3位真神,2位超级强者结局登场
    1 了解有关批处理和DOS的知识
    mysql进阶优化篇04——深入JOIN语句的底层原理
    什么是深度卷积神经网络,卷积神经网络怎么学
    spider
    windows下的volatility取证分析与讲解
    Mysql进阶优化篇06——分组查询优化、分页查询优化、覆盖索引
    Win:使用 netsh 命令配置 Port Forwarding
  • 原文地址:https://www.cnblogs.com/wei325/p/18250192