กล่องจดหมาย 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
-
* สำรองข้อมูลบล็อกและส่งไปที่อีเมล
* สะดวกมากและเหมาะสำหรับการสำรองข้อมูลเว็บไซต์ขนาดเล็ก
-
* การใช้งาน:
* /usr/local/php/bin/php /path/to/mailbackup.php
-
* @ผู้เขียน ปาน ชุนเม็ง<cmpan(at)qq.com>
* @link <a href=" http://yulans.cn/php/mail-backup">yulans.cn</a >
* @license NEWBSD
-
//require_once('class.phpmailer-lite.php');
need_once('PHPMailerLite.php');
// ตั้งค่า
$mailTo = '[email protected]' ; // ที่อยู่อีเมลที่จะส่งไป
$mailFrom = '[email protected]' ; // ที่อยู่อีเมลสำหรับส่งไฟล์แนบ
$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('เอเชีย/เซี่ยงไฮ้'); // PHP 5 >= 5.2.0
$gzPre = date('Ymd-His-');
พิมพ์ "ข้อความสำรอง:n";
พิมพ์ "backup start:".date('Ymd H:i:s').."n";
//เอกสารแนบของแพ็คเกจ
$attGz = "/tmp/{$gzPre}{$attBakFile}"; // แพ็คเกจไฟล์แนบที่ถูกบีบอัดที่จะส่ง
system("tar zcf $attGz $attDir");
พิมพ์ "$attGz finish!n";
//คัดลอกไฟล์ฐานข้อมูลและทำแพ็กเกจ
$dbGz = "/tmp/{$gzPre}{$dataBakFile}"; // แพ็คเกจการบีบอัดฐานข้อมูลไฟล์แนบที่จะส่ง
$dbTmp = "/tmp/{$gzPre}db_bak_tmp";
system("cp -R $dataDir $dbTmp");
ระบบ("tar zcf $dbGz $dbTmp");
พิมพ์ "$dbGz finish!n";
$mail = PHPMailerLite ใหม่ (จริง);
$เมล->IsSendmail();
พยายาม {
$ข้อความ = '';
$mail->SetFrom($mailFrom, 'Bak');
$mail->AddAddress($mailTo, 'cm pan');
$mail->Subject = 'ข้อมูลสำรอง Yulans.cn';
$mail->AltBody = date('Ymd H:i:s').'!';
$mail->MsgHTML(date('Ymd H:i:s').'! OK');
//เพิ่มไฟล์แนบ
ถ้า (file_exists($attGz)) {
$เมล->เพิ่มเอกสารแนบ($attGz);
$msg .= "เพิ่มไฟล์แนบ $attGz เสร็จสิ้น!<br />n";
} อื่น {
$msg .= "ไม่มีไฟล์แนบ $attGz!<br />n";
-
ถ้า (file_exists($dbGz)) {
$เมล->เพิ่มไฟล์แนบ($dbGz);
$msg .= "เพิ่มไฟล์แนบ $dbGz เสร็จสิ้น!<br />n";
} อื่น {
$msg .= "ไม่มีไฟล์แนบ $dbGz!<br />n";
-
พิมพ์ $msg;
$เมล->MsgHTML($msg);
$เมล->ส่ง();
} จับ (phpmailerException $e) {
เสียงสะท้อน $e->errorMessage();
} จับ (ยกเว้น $e) {
เสียงสะท้อน $e->getMessage();
-
// ลบไฟล์ชั่วคราว
system("rm -f $attGz");
system("rm -f $dbGz");
ระบบ("rm -rf $dbTmp");
พิมพ์ "การสำรองข้อมูลเสร็จสิ้นn";
หลังจากอัปโหลดเนื้อหาไฟล์ข้างต้นทั้งหมดไปยังเซิร์ฟเวอร์แล้ว ให้สร้างไฟล์ใหม่ใน /etc/cron.daily/ เพื่อให้ระบบรันสคริปต์สำรองข้อมูลทุกวัน เนื้อหาคือ:
#!/bin/sh
/webserver/php/bin/php /path/to/worker.php #เส้นทางของสคริปต์ php ข้างต้น