Mi buzón QQ tiene una capacidad de 16G. Se dice que la capacidad es ilimitada y aumentará automáticamente si se usa para realizar copias de seguridad de sitios web en vps, no ocupa espacio y es conveniente, ¿no sería genial? Hay una manera después del empaquetado, use sendmail para enviar al buzón QQ, es simple y rápido.
Estoy relativamente familiarizado con PHP y uso PHPMailer-Lite para llamar a sendmail y enviar archivos de respaldo. Si no puedes usar sendmail, puedes usar smtp para enviar, pero es más lento.
Si los archivos adjuntos de un sitio web grande se almacenan a diario, también puede utilizar este método para empaquetar y realizar copias de seguridad de los archivos adjuntos a diario. De todos modos, el correo QQ tiene una capacidad ilimitada, por lo que no es necesario utilizarlo en vano.
Necesita descargar http://nchc.dl.sourceforge.net/PRoject/phpmailer/phpmailer%20for%20php5_6/PHPMailer-Lite%20v5.1/PHPMailer-Lite_v5.1.zip
El siguiente es el contenido citado:
<?php
/**
* Copia de seguridad del blog y envío al correo electrónico.
* Muy conveniente y adecuado para copias de seguridad de sitios pequeños
*
* uso:
* /usr/local/php/bin/php /ruta/a/mailbackup.php
*
* @autor Pan Chunmeng<cmpan(arroba)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');
// configuración
$mailTo = '[email protected]' ; // A qué dirección de correo electrónico enviar
$mailFrom = '[email protected]' ; // Dirección de correo electrónico para enviar archivos adjuntos
$dataDir = '/data/MySQL/3306/data/yulans/'; // Ruta de la base de datos MySQL del sitio web
$attDir = '/web/yulans.cn/www/wp-content/uploads/' // Ruta del archivo adjunto
$dataBakFile = 'uploads.yulans.cn.gz';
$attBakFile = 'data.yulans.cn.gz';
date_default_timezone_set('Asia/Shanghái'); // PHP 5 >= 5.2.0
$gzPre = fecha('Ymd-Su-');
imprimir "Mensaje de respaldo:n";
print "inicio de copia de seguridad:".date('Ymd H:i:s')."n";
//Adjuntos del paquete
$attGz = "/tmp/{$gzPre}{$attBakFile}" // Paquete adjunto comprimido que se enviará
sistema("tar zcf $attGz $attDir");
print "$attGz ¡finalizar!n";
//Copiar el archivo de la base de datos y empaquetarlo
$dbGz = "/tmp/{$gzPre}{$dataBakFile}" // Paquete de compresión de base de datos adjunto que se enviará
$dbTmp = "/tmp/{$gzPre}db_bak_tmp";
sistema("cp -R $dataDir $dbTmp");
sistema("tar zcf $dbGz $dbTmp");
print "$dbGz ¡finalizar!n";
$correo = nuevo PHPMailerLite(verdadero);
$correo->IsSendmail();
intentar {
$mensaje = '';
$correo->SetFrom($correoFrom, 'Bak');
$correo->AddAddress($mailTo, 'cm pan');
$correo->Asunto = 'Copia de seguridad de Yulans.cn';
$correo->AltBody = fecha('Ymd H:i:s').'!';
$correo->MsgHTML(fecha('Ymd H:i:s').'! OK');
//Agregar archivo adjunto
si(file_exists($attGz)) {
$correo->AddAttachment($attGz);
$msg .= "AddAttachment $attGz ¡fin!<br />n";
} demás {
$msg .= "El archivo adjunto $attGz no existe!<br />n";
}
si(file_exists($dbGz)) {
$correo->AddAttachment($dbGz);
$msg .= "AddAttachment $dbGz finalizado!<br />n";
} demás {
$msg .= "¡El archivo adjunto $dbGz no existe!<br />n";
}
imprimir $mensaje;
$correo->MsgHTML($msg);
$correo->Enviar();
} captura (phpmailerException $e) {
echo $e->errorMessage();
} captura (Excepción $e) {
echo $e->getMessage();
}
// Eliminar archivos temporales
sistema("rm -f $attGz");
sistema("rm -f $dbGz");
sistema("rm -rf $dbTmp");
imprimir "Finalizar copia de seguridadn";
Después de cargar todo el contenido del archivo anterior en el servidor, cree un nuevo archivo en /etc/cron.daily/ para permitir que el sistema ejecute el script de respaldo diariamente. El contenido es:
#!/bin/sh
/webserver/php/bin/php /path/to/worker.php #La ruta del script php anterior