【Centos7发送备份文件到指定邮箱】因为需要经常备份网站的数据,所以了解并学习了下Centos7下如何通过mailx来发送邮件,这里以Centos7为例,使用mail命令来进行外部邮件的发送。先要说一下的是,现在很多博客文档复制粘贴的太多了,我找的好多mailx的教程都是各种不能用,后面各种折腾终于配置成功。
一、安装和配置mailx
首先需要安装mailx,yum安装方式非常简单
配置:配置文件默认是/etc/mail.rc
如果有问题请看下面:
以上第二行配置:set nss-config-dir=/etc/pki/nssdb;我的服务器是Centos7 默认的文件位置是:/etc/pki/nssdb,如果不确定使用find命令搜索一下。
如果直接使用25端口发送会有下面的提示,并且一直无响应直到超时:
二、配置备份脚本
邮件能发送了,那么现在开始配置备份脚本,实现把备份出来的sql文件打包发送到自己的邮箱上;
以上脚本修改一下前面的三项为自己的配置之后应该就可以用了,脚本里面的命令也是linux里面比较基础的命令了,这里只展开记录一下MySQL的备份和还原命令以及文件查找命令;
# MySQL导出数据库为sql文件
/usr/local/mysql/bin/mysqldump -u root -proot database > abc.sql
# MySQL导入sql文件到数据库
mysql -uroot -proot database < abc.sql
# MySQL导出数据库为sql文件并压缩,
/usr/local/mysql/bin/mysqldump -u root -proot database | gzip > abc.sql.gz
# MySQL导入压缩的sql文件到数据库
gzip < abc.sql.gz | mysql -uroot -proot database
find $BACKUPDIR -name "mysql_*.sql.gz" -type f -mtime +180 -exec rm {} \; > /dev/null 2>&1
# type f 表示查找普通类型的文件,f表示普通文件。
# mtime +180 按照文件的更改时间来查找文件,+180表示文件更改时间距现在180天以前;如果是 -mmin +180 表示文件更改时间距现在180分钟以前。
# exec rm {} \ 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。
# /dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的& 表示让该命令在后台执行。
三、配置定时任务
脚本能够正常备份并发送邮件了,那么应该开始配置定时任务,让脚本按照设定的周期自动执行了;
Centos7的定时计划是在 /etc/crontab 文件中记录的
配置完成保存之后命令就生效了,到了时间就会自动执行脚本了。这里我主要介绍的是在Centos7下使用mail发送电子邮件的一些使用方法,需要的要求是你的Centos7必须安装了mailx并开启了,同时保证可以连接外网。另外,文章中提到的命令本人都经过亲自测试,不保证完全可用,不过你需要将命令中的电子邮件地址换成自己的电子邮件地址。