• 对于注定会优秀的人来说,他所需要的,只是时间----博主
  • 手懒得,必受贫穷,手勤的,必得富足----《圣经》
  • 帮助别人,成就自己。愿君在本站能真正有所收获!
  • 如果你在本站中发现任何问题,欢迎留言指正!
  • 宝剑锋从磨砺出,梅花香自苦寒来!
  • 本站开启了防爆破关小黑屋机制,如果您是正常登录但被关进小黑屋,请联系站长解除!

利用shell脚本将博客数据库备份到邮箱附件

Shell脚本 eryajf 9个月前 (12-11) 2876°C 已收录 0个评论
本文预计阅读时间 6 分钟

玩个人博客的都知道,数据库备份必不可少,如果哪一天服务器直接挂掉,而且还没有备份,那基本上等同于丢失了命根子。因此日常的备份小脚本一定是不能少的。

因为个人玩家一般只有一台服务器,数据不能异地备份,因此这就想到,通过邮件附件的形式,保存到邮箱也是不错的选择。

1,配置邮件。

一般常规服务器自带发信端,我在自己本地测试也是很简单就实现了,但是阿里云服务器多少有一些不一样,所以需要一些注意的地方。

  • 安装发信组件。
yum install sendmail
  • 启动发信组件。
service sendmail start

接着配置邮件服务端信息:

vim /etc/mail.rc

在文件底部添加如下内容:

set from=Linuxlql@163.com
set smtp="smtps://smtp.163.com:465"
set smtp-auth=login
set smtp-auth-user=Linuxlql@163.com
set smtp-auth-password=xxxxxx  #改成你自己的
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb

简单说明:

  • set from:发邮件时显示的发送方
  • set smtp:指定第三方发邮件的smtp服务器地址,普通服务器可以使用25端口,阿里云服务器测试需使用465端口。
  • set smtp-auth:邮件认证的方式,默认为login
  • set smtp-auth-user:第三方发邮件的用户名
  • set smtp-auth-password:邮箱授权码

2,简单使用。

echo "testb" | mail -s "testa" Linuxlql@163.com

一个简单的发信方式,其中testa表示邮件的主题,testb是邮件内容,等待一会儿,可以在邮箱看到这封邮件。

$echo "测试一下文本导入的方式" > aa.txt
$mail -s "testc" Linuxlql@163.com < aa.txt

通过读取文本内容的方式发送邮件,过一会儿可以看看收到的邮件是否正常。

$touch test
$echo "testb" | mail -s"testa"  -a test Linuxlql@163.com

将本地文件test作为附件发出,等下可以在邮箱当中验证一下。

3,投入使用。

最后在原来的备份脚本当中,做一下简单的调整,从而让每天把数据库文件备份到邮箱成为现实。

#!/bin/sh
curdate=`date "+%Y%m%d"`
backupdir=/backup
logfile=$backupdir/dump.log
expdays=32
expdir=`date -d "$expdays days ago" "+%Y%m%d"`

if [ ! -d "$backupdir/$curdate" ]; then
        mkdir -p $backupdir/$curdate
fi


for dbname in wordpress wiki
do
    echo "`date +"%Y-%m-%d %H:%M:%S"` $dbname begin export..." >> $logfile
    /usr//bin/mysqldump -uroot -ppassword --default-character-set=utf8mb4 $dbname | gzip > $backupdir/$curdate/$dbname.sql.gz
    echo "`date +"%Y-%m-%d %H:%M:%S"` export finished " >> $logfile
done
    tar cf $backupdir/$curdate.tar.gz $backupdir/$curdate &> /dev/null
    echo "备份文件在附件" | mail -s"$curdate日数据备份"  -a /backup/$curdate.tar.gz Linuxlql@163.com &> /dev/null
    rm -rf $backupdir/$curdate

if [ -d "$backupdir/$expdir" ]; then
    rm -rf $backupdir/$expdir
    echo $backupdir/$expdir >> $logfile
fi

执行一下,然后去邮箱看看是否成功了:


weinxin
扫码订阅本站,第一时间获得更新
微信扫描二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明利用shell脚本将博客数据库备份到邮箱附件
喜欢 (1)
[如果想支持本站,可支付宝赞助]
分享 (0)
eryajf
关于作者:
学无止境,我愿意无止境学。书山有路,我愿意举身投火,淬炼成金!

您必须 登录 才能发表评论!