2019-08-27 11:38:03 4 评论 Linux Boy.Lee

Centos定时自动备份MySQL数据库并发送至指定邮箱

在Centos中使用Cron定时自动备份mysql数据库并通过Mutt发送到指定Gmail邮箱,利用Gmail垃圾邮件策略实现定时删除

 

{ No.1 编写Shell 文件 }

// Path /root/eeBakcupShell/backup-email-mysql-data.sh

#!/bin/sh
d=`date "+%Y-%m-%d"`
#当前的日期格式:年-月-日

t="yiilib.com_$d"
#发送邮件的title,我把正文跟标题写成一样的了

FP=/root/dbBackup/
#文件临时存放地址, 最后会删除


mysql -e "show databases;" -uroot -ppassword | grep -Ev "Database|information_schema|mysql|test" | xargs mysqldump -uroot -ppassword --skip-lock-tables --databases  | gzip > $FP$FName.sql.gz
#这里使用了备份数据库挑选策略,列举全部数据库名称,去掉不需要备份的名称Database|information_schema|mysql|test,余下的都会备份,同时使用gzip进行压缩

echo "backup files"|mutt -s "backup tmp $t" yiilib.com@gmail.com -a $FP$FName.sql.gz
#用mutt发送邮件到 yiilib.com@gmail.com

rm -rf $FP$FName.sql.gz
#删除.gz文件,节约空间

exit
#退出脚本

 

{ No.2 测试 }

/root/eeBakcupShell/backup-email-mysql-data.sh, 如果一切正常邮箱里已经有了邮件了,有可能在垃圾邮件箱

如果报错/bin/sh^M: bad interpreter: No such file or directory, 进行如下修改

vi /root/eeBakcupShell/backup-email-mysql-data.sh

:set ff  //这里会显示 fileformat=dos

:set ff=unix  //修改成unix即可

:wq  //保存退出

 

{ No.3 设置Cron 定时任务 }

# crontab -e

//保存结果到log目录,方便查看错误
15 03 * * * /root/eeBakcupShell/backup-email-mysql-data.sh > /log/eelog.log

 

{ No.4 利用Gmail垃圾邮件策略定时删除 }

Gmail的垃圾邮件策略会在30天后自动删除垃圾邮件,所以当你发现备份邮件出现在垃圾邮件箱请不用担心,这个策略正是我们所需要的。 

 

{ No.5 非垃圾邮件设置 }

如果你需要保存较长的保存时间,比如说保存60天内的备份邮件,那么你需要通过配置让Gmail知道备份邮件非垃圾邮件。但这样也会出现一个问题,介于邮箱容量有限目前是(15G), 你需要定期手动删除邮件。

设置方法如下:

0. 打开Gmail网站并登录你的账号
1. 设置
2. 过滤器和屏蔽的地址
3. 创建新的过滤器
3.1 包含字词 : 'backup' //subject keywords
3.2 带有附件 : 是
3.3 根据此搜索条件创建过滤器
3.4 不要将其发送至“垃圾邮件” : yes
3.5 创建过滤器
3.x 设置其他选项如果有需要

 

{ 相关链接 }

CENTOS 使用 MUTT发送邮件

CENTOS 使用 MAILX 发送SMTP邮件