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