这一次继续探索备份数据库并发送到指定邮箱。
在 cPanel 后台有一个地址可以直接获取某个数据库的备份,地址是 /getsqlbackup/database.sql.gz,原以为把这个文件发送到邮箱很简单,试着直接用 php 实现,结果不仅要先下载这个文件,还得用很长的代码把文件大卸八块寄出去,还是得放弃 php 直接使用脚本。
Linux 下的 Bash 我没用过,四处搜寻了很多实现自动备份的代码,碰巧上篇中流年同学也提到了一种方案,我结合刚刚的数据库备份的方法修改了一下,伪原创的内容就诞生了
。
一、获得数据库
1. 针对 cPanel 的方法
首先要做的事情,是下载数据库备份,cPanel 面板使用 wget 轻而易举:
#!/bin/sh cpuser="username" # 登录 cPanel 的帐号 cppass="password" # 登录 cPanel 的密码 dbpath="http://example.com:2082/getsqlbackup/database.sql.gz" # 直接把备份面板的「下载 MySQL 数据库备份」链接复制过来 savepath="database.sql.gz" # 保存的文件名 wget --http-user="$cpuser" --http-password="$cppass" $dbpath -O $savepath
dbpath 就是 cPanel 中给出的数据库备份地址(位于 http://www.example.com:2082/frontend/x3/backup/index.html,与您的 cPanel 主题有关),直接复制即可。
文件下载到了放置脚本的文件夹,您可以自己修改。
2. 通用方法
#!/bin/bash dbuser="username" # 登录数据库的帐号 dbpass="password" # 登录数据库的密码 dbname="database" # 数据库的名称 path="database.sql" # 保存的文件名 mysqldump --add-drop-table --opt -u$dbuser -p$dbpass $dbname > $path gzip $path
在进行压缩后,文件名自动加上 .gz 后缀。
二、发送邮件
接下来就是把这个文件发送出去了,依然有两种方法,一是使用 Python 发送,代码多一点(但是比 php 简单……);二是使用 mutt,这东西得主机商安装了才能用(我自己在 Ubuntu 上装了,怎样都不能发送附件
)。
#调用 python 脚本发送。sendmail.py 和 backup.sh 放在同一个目录下。 python sendmail.py #如果空间有 mutt 邮件程序,可以考虑直接用 mutt 发送,将上一句屏蔽,下一句取消屏蔽。 #mutt yourname@example.com -a ./database.sql.gz -s 「Database Backup」
使用 Python 发送邮件就直接使用 Vastar 的 sendmail.py 了,其中附件地址 file_name 要和 backup.sh 中指定的文件名保持一致(./database.sql.gz)。
三、最后的工作
不要忘记把 backup.sh 权限设定为 700,否则没有运行的权限。
按照上一篇提到的方法设定 Cron jobs,但 Command 填写的是 backup.sh 文件,例如 /home/username/backup.sh,别弄错了。




嘿嘿,最近也在思考备份的问题 ~
~
回头把备份包切割了再发发看 ~
得想办法用gmail的smtp服务器发 ~
我的vps邮件被加到黑名单列表了
@小邪, 我记得有第三方发送邮件的类,可以加入附件。
从xloli.net那里看到了备份到dropbox的方法。。。你俩是不是串通好的
@灵曦, 绝对木有,我都说了两篇了。
刚才忘了说了 字体小多了 嘿嘿
我都是直接在SSH下设置任务,后来怕占资源,还是手动备份好些
@hzlzh, 啊,会占多少资源?
你右侧的这个搜索做的太棒了,羡慕中
@软件盒子, 就是谷歌的自定义搜索,代码主要是谷歌的。
今天打开速度有点慢呢~
看这背景的水墨画 我想到仙剑1了
@电子商务, 是有点慢,ping 又不慢……
。
这背景就是仙剑五的
巧了,我也用CP,等下试试看~