Muchas veces y debido a la cantidad de cosas que hacemos durente el dia descuidamos las copias de seguridad de las bases de datos de nuestras webs o blogs. Muchos servicios de hosting incluyen esto entre sus características, unos de forma gratuita y otros de pago.

Normalmente suele ser más bien “cuando me acuerdo” y suele pasar bastante tiempo entre una copia y otra.

El mes pasado sufrí varios ataques en algunos de mis blogs y fué ahi cuando le vi las orejas al lobo y pensé que si no tenia las copias al dia podria perder toda la información, por eso busqué este script escrito en php y lo modifiqué para adecuarlo a mis propositos.

El script principal es así de simple y tan solo teneis que modifar el host, usuario, password, nombre de la base de datos y la dirección de correo donde será enviado:

[code="php""]

// Creando la copia de seguridad dela base de datos Mysql
// zona editable
$dbhost = "nombre-servidor"; // usually localhost
$dbuser = "usuario";
$dbpass = "password";
$dbname = "nombre-base-de-datos";
$sendto = "webmaster@yourdomain.com";   //correo donde se enviará la copia
$sendfrom = "copiadb@tudominio.com>"; //Quien envia la copia
$sendsubject = "Copia de la base de datos Mysql";
$bodyofemail = "Aqui tienes la copia de tu base de datos.";
// fin zona editable, no modificar lo siguiente

$backupfile = $dbname . date("Y-m-d") . '.sql';
system("mysqldump -h $dbhost -u $dbuser -p$dbpass $dbname > $backupfile");

// Mail the file

include('Mail.php');
include('Mail/mime.php');

$message = new Mail_mime();
$text = "$bodyofemail";
$message->setTXTBody($text);
$message->AddAttachment($backupfile);
$body = $message->get();
$extraheaders = array("From"=>"$sendfrom", "Subject"=>"$sendsubject");
$headers = $message->headers($extraheaders);
$mail = Mail::factory("mail");
$mail->send("$sendto", $headers, $body);

// Delete the file from your server
unlink($backupfile);
?>
[/code]

El resto del script con las libreria para enviar el correo podeis descargarlo desde aquí. Tan solo modificar los datos en backup.php y subir toda la carpeta a vuestro servidor, cada vez que ejecuteis el archivo desde el navegador recibireis las copia por mail.

Ahora bien, si sois unos despistados como yo y vuestro servidor permite ejecutar tareas cron podeis utilizar el siguiente código cambiando la seccion con asteriscos por vuestros datos para que las copias se realizen una vez por semana.

0 0 * * 0 php /home/**********/public_html/backup/backup.php

Como consejo recomiendo utilizar una cuenta de gmail para enviar los correos con las copias ya que estas ofrecen mucha capacidad, tan solo con hacer limpieza de vez en cuando es suficiente.

Existen muchos métodos para hacer copias de seguridad pero para gente olvidadiza como yo creo que es una buena opción siempre y cuando no tengas bases de datos de 100 megas ;)