[Meting]
[Music server="netease" id="1330861946" type="song"/]
[/Meting]
前言
shell脚本
#!/bin/
#进入到备份文件夹
cd /root/back
#创建存放备份文件和数据库的文件夹,并修改权限为777
mkdir -m 777 -p ./backup$(date +"%Y%m%d")
#导出数据库到备份文件夹内
mysqldump -u 数据库账号 -p密码 数据库 > ./backup$(date +"%Y%m%d")/blog.sql
#压缩存放备份文件和数据库的文件夹
tar zcvf ./backup$(date +"%Y%m%d").tar.gz ./backup$(date +"%Y%m%d")
#以附件形式发送压缩包到指定邮箱
echo "数据备份"|mail -v -s "备份时间:$(date +%Y-%m-%d)" -a /root/back/backup$(date +"%Y%m%d").tar.gz xxxxx@qq.com
#删除备份文件夹与压缩包
rm -rf /root/back/backup$(date +"%Y%m%d")
rm /root/back/backup$(date +"%Y%m%d").tar.gz
安装环境
yum install sendmail
yum install mailx
Debian/Ubuntu使用apt-get
安装。
配置
centos7环境
在/etc/mail.rc增加如下配置:
set from="xiaoke@51yuyou.com"
set smtp="smtps://smtp.ym.163.com:465"
set smtp-auth-user="xiaoke@51yuyou.com"
set smtp-auth-password="xiaoke-password"
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
填坑
阿里云对25端口不开放,所以这次使用smtps协议也就是465端口来发送邮件
验证
echo "sometext"|mail -s "my subject" 要发送的邮箱地址
更新
在使用以上方式配置后,可以发送邮件但是会提示Error in certificate: Peer's certificate issuer is not recognized
.
解决方法:
創建目錄,用來存放證書
mkdir -p /root/.certs/
向163請求證書
echo -n|openssl s_client -connect smtp.qiye.163.com:465|sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt
添加一個證書到證書數據庫中
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
使證書得到認可,避免發郵件後報錯:Error in certificate: Peer's certificate issuer is not recognized
cd /root/.certs (一定要進入到證書所在目錄才行)
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i ./163.crt
列出目錄下證書
certutil -L -d /root/.certs
3.追加配置:
vim /etc/mail.rc
set from="zabbix@xxxxx.com"
set smtp="smtps://smtp.qiye.163.com:465"
set smtp-auth-user=mail@xxxxx.com
set smtp-auth-password=123456789
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs
测试
echo 'hello'|mail -v -s "test mail" human.hu@xxxxx.com
unbunt或debian
相对来说就很简单了,只需要将脚本最后一句echo "数据备份"|mail -v -s "备份时间:$(date +%Y-%m-%d)" -a /root/back/backup$(date +"%Y%m%d").tar.gz 邮箱
改为sendEmail -f from@163.com -t to@qq.com -s smtp.163.com -u 'test' -o message-content-type=html -o message-charset=utf8 -xu from@163.com -xp 'passwd' -m 'test'
即可。
sendemail命令详解
收到此提示表示发送成功
-f from@163.com #发件人邮箱地址
-t to@qq.com #收件人邮箱地址
-s smtp.163.com #发件人邮箱的smtp服务器地址
-u 'test' #邮件标题
-o message-content-type=html #邮件内容格式为html
-o message-charset=utf8 #邮件内容编码为utf8
-xu from@163.com #发件人邮箱登录用户名
-xp 'passwd' #发件人邮箱登录密码
-m 'test' #邮件内容
也就是说centos系列系统用的是mail
发送和debian系列用的是sendmail
发送。
定时执行,每日备份
2、设定自动任务
crontab -e
SSH执行以上命令。
3、添加任务
00 00 * * * /root/backup.sh
按键盘字符:“i”,回车另起一行,添加以上代码,路径和时间请根据实际情况修改。
其中00 00为时间分/小时,可自行修改,例如:30 00 ,就是每天凌晨0:30运行这个脚本。这里的5个 分别代表分 时 日 月 周需要多久备份一次可以自己修改。
修改完成之后按esc或者ctrl+c退出编辑状态,再输入 :wq 保存任务。可以用crontab -l 来查看添加的任务是否在进行中。
crontab命令详解
以下是 crontab 文件的格式:
{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
o minute: 区间为 0 – 59
o hour: 区间为0 – 23
o day-of-month: 区间为0 – 31
o month: 区间为1 – 12. 1 是1月. 12是12月.
o Day-of-week: 区间为0 – 7. 周日可以是0或7.
看不懂,没关系看这个00 00 * * *
每天晚上00:00分执行备份00 13 * * *
每天下午03:00分执行备份00 13 03 * *
每月3号下午13点开始备份
效果
版权属于:逍遥子大表哥
本文链接:https://blog.bbskali.cn/547.html
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
此处评论已关闭