美文网首页
centos7下 mutt+msmtp 自动备份数据库发送到邮箱

centos7下 mutt+msmtp 自动备份数据库发送到邮箱

作者: Pecksniff1994 | 来源:发表于2020-08-14 13:58 被阅读0次

    近日公司没有新的需求,闲来无事想起之前看到的定时自动备份数据库的脚本挺有意思的.
    研究准备之余考虑到备份脚本存在服务器上不是很方便和安全于是脚本中加上了发送邮件的功能,话不多说让我们开始..............
    步骤1 安装并配置mutt

    yum -y install mutt #安装mutt
    

    接下来配置mutt

    vim /etc/Muttrc
    set use_from=yes
    set use_envelope_from=yes
    set realname="your mail name" #你指定的邮箱名字可随意填写
    set from="yourmail@qq.com" #配置的邮箱作为邮件的发送方
    set sendmail="/usr/local/msmtp/bin/msmtp -C /etc/msmtprc" #msmtp服务的路径 -C为指定msmtp的配置文件
    

    步骤2 安装并配置msmtp
    由于阿里云对25端口封禁,我这边选择源码编译的方式安装(这里卡了很久,安装完成后发送邮件不报错但就是死活收不到邮件)

    wget https://marlam.de/msmtp/releases/msmtp-1.8.1.tar.xz
    解压缩包
    xz -d msmtp-1.8.1.tar.xz
    tar -xvf msmtp-1.8.1.tar
    cd msmtp-1.8.1
    
    yum -y install gnutls gnutls-devel gnutls-utils openssl openssl-devel libidn libidn-devel #相关依赖安装
    
    ./configure --prefix=/usr/local/msmtp --sysconfdir=/etc/ --with-ssl=openssl && sudo make && sudo make install #编译安装  指定安装目录  配置文件目录  添加ssl加密支持
    

    配置msmtp

    vim /etc/msmtprc #创建或编辑msmtp配置文件
    
    account qqmail #指定邮箱账户名
    tls on
    auth on
    tls_starttls off
    tls_trust_file /etc/ssl/certs/ca-bundle.crt
    host smtp.qq.com
    port 465 #使用ssl安全连接465端口 25端口被阿里云封禁,配置出入站规则都不行,其他服务器可自行测试
    user yourmail@qq.com
    from yourmail@qq.com
    password ******* #IMAP/SMTP服务授权码,授权之后才可以使用该邮箱发送邮件 设置位置在:设置-->账户-->IMAP/SMTP开启该服务后得到的授权码.如下图位置
    
    image.png

    修改msmtprc文件的权限,因为文件涉及了敏感信息

    chmod 600 /etc/msmtprc
    

    测试邮件发送,成功接收到邮件

    echo "hello" | msmtp -a qqmail -C /etc/msmtprc yourmail@qq.com
    
    image.png
    步骤3 编写shell脚本
    cd /home
    vim auto_sql_backup.sh #创建shell脚本文件
    
    #!/bin/bash
    export LANG=en_US.UTF-8 #防止中文乱码
    baktime=$(date +%Y-%m-%d_%H-%M-%S) #备份时间
    bakname=all_bak.${baktime}.sql #备份文件名
    ip=`/sbin/ifconfig eth0 | grep "inet" | awk  '{print $2}' | awk '{print $1}'` #获取服务器ip awk -F指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。缺省则表示按空格或者Tab分割
    mac=`/sbin/ifconfig | grep "ether" | awk  '{print $2}'` #获取服务器mac
    passwd='yourpass' #数据库密码
    mysqldump -uroot -p$passwd --all-databases > /home/tqj/backup/${bakname} #导出需要备份的数据
    tar zcf /home/tqj/backup/${bakname}.tar.gz -C /home/tqj/backup/ ${bakname} #解压备份文件到指定目录
    echo "服务器IP:${ip} 机器MAC:${mac} 备份时间:${baktime} 请查收附件" | mutt yourmail@163.com -s "IP${ip}数据库全>库定时备份${baktime}" -a /home/tqj/backup/${bakname}.tar.gz #发送备份文件为附件的邮件到目标邮箱
    rm -f /home/tqj/backup/${bakname}.tar.gz #删除备份压缩包
    rm -f /home/tqj/backup/${bakname} #删除备份文件
    

    给脚本添加执行权限

    chmod 777 /home/auto_sql_backup.sh
    

    添加定时任务

    crontab -e #编辑方式与vim命令相同
    0 * * * * /home/auto_sql_backup.sh #每小时执行一次
    0 0 * * * /home/auto_sql_backup.sh #每天执行一次备份
    

    至此相关功能全部实现,谨以此记录!希望能帮到有需要的人.

    相关文章

      网友评论

          本文标题:centos7下 mutt+msmtp 自动备份数据库发送到邮箱

          本文链接:https://www.haomeiwen.com/subject/urzwdktx.html