使用 Cron jobs 自动备份网站(二)

8 月 4 日, Ray Chow 发表于 小技巧, 51 回应

这一次继续探索备份数据库并发送到指定邮箱。

在 cPanel 后台有一个地址可以直接获取某个数据库的备份,地址是 /getsqlbackup/database.sql.gz,原以为把这个文件发送到邮箱很简单,试着直接用 php 实现,结果不仅要先下载这个文件,还得用很长的代码把文件大卸八块寄出去,还是得放弃 php 直接使用脚本。

Cron jobs

Linux 下的 Bash 我没用过,四处搜寻了很多实现自动备份的代码,碰巧上篇中流年同学也提到了一种方案,我结合刚刚的数据库备份的方法修改了一下,伪原创的内容就诞生了 :mrgreen:

一、获得数据库

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 上装了,怎样都不能发送附件 :cry: )。

#调用 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)。

三、最后的工作

按这里下载:cPanel, 通用

不要忘记把 backup.sh 权限设定为 700,否则没有运行的权限。

按照上一篇提到的方法设定 Cron jobs,但 Command 填写的是 backup.sh 文件,例如 /home/username/backup.sh,别弄错了。

无觅相关文章插件,快速提升流量

固定链接: http://beamnote.com/2010/cpanel-automatic-backup-chapter-2.html

订阅本文 RSS 以获取最新动向。

发表评论或者发送 Trackback

51 回应

  1. 嘿嘿,最近也在思考备份的问题 ~
    回头把备份包切割了再发发看 ~
    得想办法用gmail的smtp服务器发 ~
    我的vps邮件被加到黑名单列表了 :cry: :cry: :cry: ~

  2. 从xloli.net那里看到了备份到dropbox的方法。。。你俩是不是串通好的 :twisted:

  3. 刚才忘了说了 字体小多了 嘿嘿 :mrgreen:

  4. 我都是直接在SSH下设置任务,后来怕占资源,还是手动备份好些

  5. 你右侧的这个搜索做的太棒了,羡慕中

  6. 今天打开速度有点慢呢~
    看这背景的水墨画 我想到仙剑1了

  7. 巧了,我也用CP,等下试试看~

发表评论

必填区域以 * 标出

*
*