Мой почтовый ящик QQ имеет емкость 16Г. Говорят, что емкость не ограничена и будет автоматически увеличиваться. Если его использовать для резервного копирования сайтов на впс, он не занимает места и удобен, было бы здорово! Есть способ после упаковки использовать 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 /путь/к/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 = '[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»;
напечатайте "начало резервного копирования:".date('Ymd H:i:s')."n";
//Вложения пакета
$attGz = "/tmp/{$gzPre}{$attBakFile}" // Сжатый пакет вложений для отправки;
system("tar zcf $attGz $attDir");
напечатайте "$attGz финиш!n";
//Копируем файл базы данных и упаковываем его
$dbGz = "/tmp/{$gzPre}{$dataBakFile}" // Пакет сжатия базы данных вложений для отправки;
$dbTmp = "/tmp/{$gzPre}db_bak_tmp";
system("cp -R $dataDir $dbTmp");
system("tar zcf $dbGz $dbTmp");
напечатайте "$dbGz финиш!n";
$mail = новый PHPMailerLite(истина);
$mail->IsSendmail();
пытаться {
$msg = '';
$mail->SetFrom($mailFrom, 'Бак');
$mail->AddAddress($mailTo, 'см панорама');
$mail->Subject = 'Резервная копия Yulans.cn';
$mail->AltBody = date('Ymd H:i:s').'!';
$mail->MsgHTML(date('Ymd H:i:s').'! OK');
//Добавляем вложение
если (file_exists($attGz)) {
$mail->AddAttachment($attGz);
$msg .= "AddAttachment $attGz завершено!<br />n";
} еще {
$msg .= "Вложение $attGz не существует!<br />n";
}
если (file_exists ($ dbGz)) {
$mail->AddAttachment($dbGz);
$msg .= "AddAttachment $dbGz готово!<br />n";
} еще {
$msg .= "Вложение $dbGz не существует!<br />n";
}
напечатайте $сообщение;
$mail->MsgHTML($msg);
$mail->Отправить();
} catch (phpmailerException $e) {
эхо $e->errorMessage();
} catch (Исключение $e) {
echo $e->getMessage();
}
// Удалить временные файлы
system("rm -f $attGz");
system("rm -f $dbGz");
system("rm -rf $dbTmp");
напечатайте «Резервное копирование завершеноn»;
После того, как все вышеуказанное содержимое файла будет загружено на сервер, создайте новый файл в /etc/cron.daily/, чтобы система могла ежедневно запускать сценарий резервного копирования. Содержимое:
#!/бин/ш
/webserver/php/bin/php /path/to/worker.php #Путь к указанному выше PHP-скрипту