Minha caixa de correio QQ tem capacidade de 16G. Diz-se que a capacidade é ilimitada e aumentará automaticamente. Se for usada para fazer backup de sites em vps, não ocupa espaço e é conveniente, não seria ótimo! Existe uma maneira. Após o empacotamento, use o sendmail para enviar para a caixa de correio QQ, é simples e rápido.
Estou relativamente familiarizado com PHP e uso o PHPMailer-Lite para chamar o sendmail para enviar arquivos de backup. Se você não puder usar o sendmail, poderá usar o smtp para enviar, mas é mais lento.
Se os anexos de um grande site são armazenados diariamente, você também pode usar este método para empacotar e fazer backup de anexos diariamente. De qualquer forma, o correio QQ tem capacidade ilimitada, portanto não há necessidade de usá-lo em vão.
Precisa baixar http://nchc.dl.sourceforge.net/PRoject/phpmailer/phpmailer%20for%20php5_6/PHPMailer-Lite%20v5.1/PHPMailer-Lite_v5.1.zip
A seguir está o conteúdo citado:
<?php
/**
* Backup do blog e envio para e-mail
* Muito conveniente e adequado para backup de pequenos sites
*
* uso:
* /usr/local/php/bin/php /caminho/para/mailbackup.php
*
* @autor Pan Chunmeng<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');
// configurar
$mailTo = '[email protected]' ; // Para qual endereço de e-mail enviar
$mailFrom = '[email protected]' ; // Endereço de e-mail para envio de anexos
$dataDir = '/data/MySQL/3306/data/yulans/'; // Caminho do banco de dados MySQL do site
$attDir = '/web/yulans.cn/www/wp-content/uploads/'; // Caminho do anexo
$dataBakFile = 'uploads.yulans.cn.gz';
$attBakFile = 'data.yulans.cn.gz';
date_default_timezone_set('Ásia/Xangai'); // PHP 5 >= 5.2.0
$gzPre = data('Ymd-His-');
print "Mensagem de backup:n";
imprima "início do backup:".date('Ymd H:i:s')."n";
//Anexos do pacote
$attGz = "/tmp/{$gzPre}{$attBakFile}" // Pacote de anexo compactado a ser enviado
sistema("tar zcf $attGz $attDir");
imprimir "$attGz terminar!n";
//Copie o arquivo do banco de dados e empacote-o
$dbGz = "/tmp/{$gzPre}{$dataBakFile}" // Pacote de compactação de banco de dados anexo a ser enviado
$dbTmp = "/tmp/{$gzPre}db_bak_tmp";
system("cp -R $dataDir $dbTmp");
sistema("tar zcf $dbGz $dbTmp");
imprimir "$dbGz finalizado!n";
$mail = novo PHPMailerLite(true);
$mail->IsSendmail();
tentar {
$msg = '';
$mail->SetFrom($mailFrom, 'Bak');
$mail->AddAddress($mailTo, 'cm pan');
$mail->Assunto = 'backup Yulans.cn';
$mail->AltBody = data('Ymd H:i:s').'!';
$mail->MsgHTML(date('Ymd H:i:s').'! OK');
//Adiciona anexo
if(arquivo_existe($attGz)) {
$mail->AddAttachment($attGz);
$msg .= "AddAttachment $attGz finalizado!<br />n";
} outro {
$msg .= "Anexo $attGz não existe!<br />n";
}
if(arquivo_existe($dbGz)) {
$mail->AddAttachment($dbGz);
$msg .= "AddAttachment $dbGz finalizado!<br />n";
} outro {
$msg .= "Anexo $dbGz não existe!<br />n";
}
imprimir $ mensagem;
$mail->MsgHTML($msg);
$mail->Enviar();
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exceção $e) {
echo $e->getMessage();
}
//Exclui arquivos temporários
sistema("rm -f $attGz");
sistema("rm -f $dbGz");
sistema("rm -rf $dbTmp");
imprimir "Concluído Backupn";
Depois que todo o conteúdo do arquivo acima for carregado no servidor, crie um novo arquivo em /etc/cron.daily/ para permitir que o sistema execute o script de backup diariamente.
#!/bin/sh
/webserver/php/bin/php /path/to/worker.php #O caminho do script php acima