环境
Ubuntu 22.04
安装所需软件
1 2 3
| apt update && apt-get update \ apt install msmtp -y \ apt install mutt -y
|
配置文件
vim /etc/Muttrc
1 2 3 4 5
| set sendmail="/usr/bin/msmtp" set use_from=yes set realname="163备份邮箱" set from="[email protected]" set envelope_from=yes
|
vim /etc/msmtprc
测试邮件发送
echo “邮件标题” | mutt -s “邮件内容” target_xxx@xxx.com -a 附件.xxx
编写脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #!/bin/bash
##### 配置Begin ##### #备份保存路径 BACKUP_PATH=/data/backup/mysql #当前时间 CURRENT_TIME=$(date +%Y%m%d_%H%M%S) #收件人邮箱 RECV_EMAIL=xxx #数据库地址 HOST=localhost #数据库用户名 DB_USER=root #数据库密码 DB_PW=xxx # 要备份的数据库名 DATABASE=xxx ##### 配置End #####
[ ! -d "$BACKUP_PATH" ] && mkdir -p "$BACKUP_PATH" FILE_GZ=${BACKUP_PATH}/$CURRENT_TIME.$DATABASE.sql.gz /usr/local/bin/mysqldump -u${DB_USER} -p${DB_PW} --host=$HOST -q -R --databases $DATABASE | gzip > $FILE_GZ # 此处必须要用绝对路径
# 所有数据库 #mysqldump --all-databases -xxxxx
echo "数据库备份--$FILE_GZ" | mutt -s "$DATABASE备份" $RECV_EMAIL -a $FILE_GZ
# 删除 7 天以前的备份 「注意写法」 find $BACKUP_PATH -mtime +7 -name "*sql.gz" -exec rm -f {} \;
|
新建定时任务
每周一0点0分执行一次备份脚本
1 2
| crontab -e 0 0 * * 1 bash /xxx/xxx/backup.sh
|
QA
在 Ubuntu 下如遇一下错误提示
1 2
| Error sending message, child exited 127 (Exec error.). Could not send the message.
|
请尝试运行 apt install sendmail
后再次尝试发送
参考
MySQL 自动备份并发送到邮箱
将mysql数据备份定时发送到email