تبلغ سعة صندوق بريد QQ الخاص بي 16 غيغابايت، ويقال إن السعة غير محدودة وستزداد تلقائيًا إذا تم استخدامها لعمل نسخة احتياطية من مواقع الويب على خادم VPS، فهي لا تشغل مساحة وهي مريحة، ألن يكون ذلك رائعًا! هناك طريقة بعد التعبئة، استخدم sendmail لإرسالها إلى صندوق بريد QQ، فهي بسيطة وسريعة.
أنا معتاد نسبيًا على لغة PHP وأستخدم PHPMailer-Lite للاتصال بـ sendmail لإرسال ملفات النسخ الاحتياطي. إذا لم تتمكن من استخدام sendmail، فيمكنك استخدام smtp للإرسال، ولكنه أبطأ.
إذا تم تخزين مرفقات موقع ويب كبير بشكل يومي، فيمكنك أيضًا استخدام هذه الطريقة لحزم المرفقات ونسخها احتياطيًا بشكل يومي. على أي حال، يتمتع بريد QQ بسعة غير محدودة، لذلك ليست هناك حاجة لاستخدامه عبثًا.
وفيما يلي المحتوى المقتبس:
<?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 >
* @رخصة NEWBSD
*/
//require_once('class.phpmailer-lite.php');
require_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('Asia/Shanghai'); // PHP 5 >= 5.2.0
$gzPre = date('Ymd-His-');
طباعة "رسالة النسخ الاحتياطي:n";
طباعة "بدء النسخ الاحتياطي:".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");
system("القطران zcf $dbGz $dbTmp");
طباعة "$dbGz Finish!n";
$mail = new PHPMailerLite(true);
$mail->IsSendmail();
يحاول {
$msg = '';
$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');
// إضافة مرفق
إذا (ملف_موجود($attGz)) {
$mail->AddAttachment($attGz);
$msg .= "AddAttachment $attGz Finish!<br />n";
} آخر {
$msg .= "المرفق $attGz غير موجود!<br />n";
}
إذا (ملف_موجود($dbGz)) {
$mail->AddAttachment($dbGz);
$msg .= "AddAttachment $dbGz Finish!<br />n";
} آخر {
$msg .= "المرفق $dbGz غير موجود!<br />n";
}
طباعة رسالة $؛
$mail->MsgHTML($msg);
$mail->إرسال();
} التقاط (phpmailerException $e) {
صدى $e->errorMessage();
} التقاط (استثناء $e) {
echo $e->getMessage();
}
// حذف الملفات المؤقتة
نظام("rm -f $attGz");
نظام("rm -f $dbGz");
نظام("rm -rf $dbTmp");
طباعة "إنهاء النسخ الاحتياطيn";
بعد تحميل جميع محتويات الملف أعلاه إلى الخادم، قم بإنشاء ملف جديد في /etc/cron.daily/ للسماح للنظام بتشغيل البرنامج النصي للنسخ الاحتياطي بشكل يومي.
#!/بن/ش
/webserver/php/bin/php /path/to/worker.php # مسار البرنامج النصي php أعلاه