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 设置其他选项如果有需要
{ 相关链接 }
留言