vps小站最佳备份方案:邮件备份

王朝学院·作者佚名  2016-04-28  
宽屏版  字体: 小 | 中 | 大 | 超大  

我的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

以下为引用的内容:

<?php

/**

* 博客备份并发送到邮箱

* 很方便很适合小站备份的方式

*

* useage:

* /usr/local/php/bin/php /path/to/mailbackup.php

*

* @author 潘春孟 <cmpan(at)qq.com>

* @link <a href="http://yulans.cn/php/mail-backup">yulans.cn</a>

* @license NEWBSD

*/

//require_once('class.phpmailer-lite.php');

require_once('PHPMailerLite.php');

// 设置

$mailTo = 'myemail@qq.com'; // 发送到哪个邮箱

$mailFrom = 'bak@yulans.cn'; // 发送附件邮箱名

$dataDir = '/data/MySQL/3306/data/yulans/'; // 网站的MySQL数据库路径

$attDir = '/web/yulans.cn/www/wp-content/uploads/'; // 附件路径

$dataBakFile = 'uploads.yulans.cn.gz';

$attBakFile = 'data.yulans.cn.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}"; // 待发送附件数据库压缩包

$dbTmp = "/tmp/{$gzPre}db_bak_tmp";

system("\cp -R $dataDir $dbTmp");

system("tar zcf $dbGz $dbTmp");

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!<br />\n";

} else {

$msg .= "Attachment $attGz not exists!<br />\n";

}

if(file_exists($dbGz)) {

$mail->AddAttachment($dbGz);

$msg .= "AddAttachment $dbGz finish!<br />\n";

} else {

$msg .= "Attachment $dbGz not exists!<br />\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 $dbTmp");

print "Backup Finish\n";

上面的文件内容全部上传到服务器以后,在/etc/cron.daily/新建一个文件让系统按天运行备份脚步,内容为:

#!/bin/sh

/webserver/php/bin/php /path/to/worker.php #上面的php脚步的路径

附件:php备份脚本下载:mail-backup

【相关备份方法】

VPS折腾笔记之VPS备份

自动备份文件并发送到Gmail (适用G级数据的备份)

文章来源:http://yulans.cn/php/mail-backup

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有