vps小站最佳备份方案:邮件备份
Filed under: PHP » 网络技术 — cmpan @ 2011-01-11 10:04:40
我的QQ邮箱容量16G,据说容量是不限的,会自动增加,如果用来备份vps上的网站,不占空间又方便,那岂不是很爽!
有办法了,打包后用sendmail发送到QQ邮箱,简单快捷。
我比较熟悉php,用PHPMailer-Lite来调用sendmail发送备份文件。你不能用sendmail的话可以使用smtp发送,不过比较慢一点。
要是大站附件按天来存的话,也可以用这个方法来按天打包备份附件,反正QQ邮件是无限容量的,不用白不用。
需要下载 http://nchc.dl.sourceforge.net/project/phpmailer/phpmailer%20for%20php5_6/PHPMailer-Lite%20v5.1/PHPMailer-Lite_v5.1.zip
/**
* 博客备份并发送到邮箱
* 很方便很适合小站备份的方式
*
* useage:
* /usr/local/php/bin/php /path/to/mailbackup.php
*
* @author xxx
* @link pjy.me
* @license NEWBSD
*/
//require_once('class.phpmailer-lite.php');
require_once('PHPMailerLite.php');
set_time_limit(0);
// 设置
$mailTo = 'a@pjy.me'; // 发送到哪个邮箱
$mailFrom = 'b@pjy.me'; // 发送附件邮箱名
$dbUser = 'root';
$dbPass = '';
$dbName = 'yulans';
$mysqlBinDir = '/webserver/mysql/bin';
$attDir = '/webserver/web/pjy.me/www/wp-content/uploads/'; // 附件路径
$attBakFile = 'uploads.pjy.me.tar.gz';
$dataBakFile = 'data.pjy.me.tar.gz';
date_default_timezone_set('Asia/Shanghai'); // PHP 5 >= 5.2.0
$gzPre = date('Ymd-His-');
print "Backup Message:n";
print "backup start:".date('Y-m-d H:i:s')."n";
// 打包附件
$attGz = "/tmp/{$gzPre}{$attBakFile}"; // 待发送附件压缩包
system("tar zcf $attGz $attDir");
print "$attGz finish!n";
// 导出数据库进行打包
$dbGz = "/tmp/{$gzPre}{$dataBakFile}"; // 待发送附件数据库压缩包
system("{$mysqlBinDir}/mysqldump -u{$dbUser} -p{$dbPass} {$dbName} > /tmp/{$dbName}.sql");
system("tar zcf $dbGz /tmp/{$dbName}.sql");
print "$dbGz finish!n";
$mail = new PHPMailerLite(true);
$mail->IsSendmail();
try {
$msg = '';
$mail->SetFrom($mailFrom, 'Bak');
$mail->AddAddress($mailTo, 'cm pan');
$mail->Subject = 'Yulans.cn backup';
$mail->AltBody = date('Y-m-d H:i:s').'!';
$mail->MsgHTML(date('Y-m-d H:i:s').'! OK');
// 添加附件
if(file_exists($attGz)) {
$mail->AddAttachment($attGz);
$msg .= "AddAttachment $attGz finish!
n";
} else {
$msg .= "Attachment $attGz not exists!
n";
}
if(file_exists($dbGz)) {
$mail->AddAttachment($dbGz);
$msg .= "AddAttachment $dbGz finish!
n";
} else {
$msg .= "Attachment $dbGz not exists!
n";
}
print $msg;
$mail->MsgHTML($msg);
$mail->Send();
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->getMessage();
}
// 删除临时文件
system("rm -f $attGz");
system("rm -f $dbGz");
system("rm -rf /tmp/{$dbName}.sql");
print "Backup Finishn";
上面的文件内容全部上传到服务器以后,在/etc/cron.daily/新建一个文件让系统按天运行备份脚步,内容为:
#!/bin/sh
/webserver/php/bin/php /path/to/worker.php #上面的php脚步的路径
适用于MyISAM的完整的php备份脚本下载:mail-backup
适用于所有表类型的php备份脚本下载
文章评论
数据量大咋办!
不错 ,欢迎回访,加油,欢迎来我的网站指导啊1b
http://www.ewoka.net/ 过来踩踩 ,欢迎回访,哈哈c4
不错,值得研究一下。