逍遥子

阿里云定时备份任务填坑记
前言下午闲来无事,写了linux下的定时任务管理。大体思路是这样的,首先备份数据库,让后将数据库发送到我们指定的...
扫描右侧二维码阅读全文
04
2018/12

阿里云定时备份任务填坑记

前言

下午闲来无事,写了linux下的定时任务管理。大体思路是这样的,首先备份数据库,让后将数据库发送到我们指定的邮箱中。并删除本地备份的数据。

shell脚本

#!/bin/bash
# 进入到备份文件夹
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安装。
1.png

配置

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

QQ截图20181204161046.png

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.
看不懂,没关系看这个
3333.png
00 00 * * *每天晚上00:00分执行备份
00 13 * * *每天下午03:00分执行备份
00 13 03 * *每月3号下午13点开始备份

效果

888.png

Last modification:December 30th, 2018 at 05:50 pm
正在沿街乞讨中……

Leave a Comment

7 comments

  1. 气动隔膜泵 Google Chrome 63.0.3239.132 Windows 7 中国 江苏 扬州

    旺旺
    [url=http://www.com]旺旺[/url]

    1. 逍遥子 搜狗浏览器 Build Android 9 中国 江苏 扬州
  2. 无崖子 搜狗浏览器 Build Android 8.1.0 中国 甘肃

    感谢分享!

    1. 逍遥子 搜狗浏览器 Build Android 8.1.0 中国 甘肃
      @无崖子

      没事!

      1. 母笑阳 非主流浏览器 非主流操作系统 GOOGLE.COM GOOGLE.COM
        @逍遥子

        OlntmMYF

      2. 一如既往 非主流浏览器 非主流操作系统 GOOGLE.COM GOOGLE.COM
        @逍遥子

        TMBt7RRk

      3. 给自己一个微笑 非主流浏览器 非主流操作系统 GOOGLE.COM GOOGLE.COM
        @逍遥子

        JIHSKcCU