5

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

 3 years ago
source link: http://www.eryajf.net/2245.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本文预计阅读时间 6 分钟

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

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

1,配置邮件。

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

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

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

  1. vim /etc/mail.rc
  2. 在文件底部添加如下内容:
  3. set [email protected]
  4. set smtp="smtps://smtp.163.com:465"
  5. set smtp-auth=login
  6. set [email protected]
  7. set smtp-auth-password=xxxxxx #改成你自己的
  8. set ssl-verify=ignore
  9. 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,简单使用。

  1. echo "testb" | mail -s "testa" [email protected]

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

  1. $echo "测试一下文本导入的方式" > aa.txt
  2. $mail -s "testc" [email protected] < aa.txt

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

  1. $touch test
  2. $echo "testb" | mail -s"testa" -a test [email protected]

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

3,投入使用。

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

  1. #!/bin/sh
  2. curdate=`date "+%Y%m%d"`
  3. backupdir=/backup
  4. logfile=$backupdir/dump.log
  5. expdays=32
  6. expdir=`date -d "$expdays days ago" "+%Y%m%d"`
  7. if [ ! -d "$backupdir/$curdate" ]; then
  8. mkdir -p $backupdir/$curdate
  9. fi
  10. for dbname in wordpress wiki
  11. do
  12. echo "`date +"%Y-%m-%d %H:%M:%S"` $dbname begin export..." >> $logfile
  13. /usr//bin/mysqldump -uroot -ppassword --default-character-set=utf8mb4 $dbname | gzip > $backupdir/$curdate/$dbname.sql.gz
  14. echo "`date +"%Y-%m-%d %H:%M:%S"` export finished " >> $logfile
  15. done
  16. tar cf $backupdir/$curdate.tar.gz $backupdir/$curdate &> /dev/null
  17. echo "备份文件在附件" | mail -s"$curdate日数据备份" -a /backup/$curdate.tar.gz [email protected] &> /dev/null
  18. rm -rf $backupdir/$curdate
  19. if [ -d "$backupdir/$expdir" ]; then
  20. rm -rf $backupdir/$expdir
  21. echo $backupdir/$expdir >> $logfile
  22. fi

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


weinxin

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明利用shell脚本将博客数据库备份到邮箱附件

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK