linux crontab结合php脚本自动备份数据库到免费七牛云存储

windows azure mail

windows azure mail

好吧,为毛不选择shell script备份呢,因为七牛云存储木有shell script的sdk。其次呢,我对shell脚本的熟练程度远不及php脚本。再者呢,php有三个功能:第一,当然是做web开发;第二,做控制台程序;第三,做gui程序。GUI就算了吧,哈哈,php是最好的编程语言都被大家黑出翔了,最近有尝试在用python的tkinter和pyqt类库做gui程序。七牛呢,又提供了php的sdk,于是乎就选择php啦~~~~

上脚本代码:

脚本下载


<?php

require_once('qiniu/io.php');//导入七牛的sdk
require_once('qiniu/rs.php');

//数据库备份
$dbs = '';
foreach($argv as $k => $v){//遍历执行脚本传入的参数
if($k == 0) continue;
$dbs .= ' '.$v;
}
$dbPath = dirname(__FILE__).'/mysql/';//在执行脚本的目录下创建mysql文件夹,用来存放导出的sql脚本
if(!is_dir($dbPath)){
mkdir($dbPath,0777,true);
}
$fileName = date('Y-m-d_H-i-s').$dbs.'.sql';
$fileName = str_replace(' ','-',$fileName);
$dbFile = $dbPath.$fileName;
system("mysqldump -uroot -pxxxxxxxxxx --default-character-set=utf8 --databases $dbs  > $dbFile",$res);//导出sql脚本

//七牛设置
$bucket = 'linux';//七牛的bucket
$key = 'mysql/'.$fileName;//上传到七牛的位置及文件名

$client = new Qiniu_MacHttpClient(null);//这些东东是sdk demno附带的,神马回调地址应该可以删除的,但是反正不碍事,就不管他了
$putPolicy = new Qiniu_RS_PutPolicy("$bucket:$key");
$putPolicy->CallbackUrl = 'https://10fd05306325.a.passageway.io';
$putPolicy->CallbackBody = 'key=$(key)&hash=$(etag)';
$upToken = $putPolicy->Token(null);

$putExtra = new Qiniu_PutExtra();
$s = time();
list($ret, $err) = Qiniu_PutFile($upToken, $key, $dbFile, $putExtra);//上传在here
if ($err !== null) {//备份是否成功,产生个日志文件databaseBackup.log及发一封email给admin#feehi.com
logs("数据库{$dbs}备份成功");
} else {
logs("数据库{$dbs}备份失败");
}
function logs($message)
{
$content = date('Y-m-d H:i:s').' :'.$message;
file_put_contents('databaseBackup.log',$content.'rn',FILE_APPEND);
if(strpos($content,'成功')){
$title = '备份成功';
}else{
$title = '备份失败';
}
mail('admin@feehi.com',$title,$content);
}

db.php

db.php

这样呢,在设置了php到环境变量的情况下,就可以使用php db.php 数据库1 数据库2 的方式来备份啦,但是呢,每天来执行很麻烦,就可以结合crontab,让linux的计划任务,每天来定时跑一下这个脚本。

1)crontab -e 编写计划任务(crond是linux内置的服务,直接使用service crond start就可以开启,最好加入到开机自启)

2)书写任务 分 时 日 月 周 命令
分,1-59,每分钟用*表示
时,1-23,0表示0点
日,1-31
月,1-12
周,0-6,0表示周日
命令
如40 13 * * *  php /root/backupToQiniu/db.php blog bw 表示每天13:40执行这个php脚本,并传入blog bw参数

crontab -e

crontab -e

ok,等到过了13:40后,我的admin#feehi.com就收到提示成功备份的邮件啦,去脚本目录也看到产生了一个mysql目录,并包含了一个sql脚本,去七牛存储空间也看到了这个自动备份的sql脚本:

mail提示

mail提示

七牛备份

七牛备份

评论

目前评论:0   

点击加载更多评