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


9 respuestas a comentarios
Hola, esta bueno eso, solo un problema, me esta mostrando este error..
mysqldump: unknown variable ‘max_heap_table_size=256M’
probe con algunos cambios pero nada, q puede ser?
La variable max_heap_table_size es la que controla el límite de memoria que puede consumir una tabla, tendrás que modificarlo en tu servidor o si no tienes permisos pedir que te lo modifique tu proveedor de hosting.
buenas tengo el siguiente problema, los correos no me llegan y me lanza esto.
Notice: Only variable references should be returned by reference in /var/www/vhosts/farmagaleno.com/httpdocs/copia-de-seguridad/Mail/mime.php on line 359
Notice: Only variable references should be returned by reference in /var/www/vhosts/farmagaleno.com/httpdocs/copia-de-seguridad/Mail/mime.php on line 437
Notice: Only variable references should be returned by reference in /var/www/vhosts/farmagaleno.com/httpdocs/copia-de-seguridad/Mail/mime.php on line 596
Gracias y un Saludo por el blog!
Segun he podido leer en algunos foros, puede deberse a que tu servidor cuenta con una versión de PHP desactualizada. Comprueba que versión de php hay instalada en el servidor.
Un saludo.
Hola, el enlace hacia MegaUpload lógicamente esta caído. ¿PodrÍa restablecerlo en otro servicio para compartir archivos? Saludos
Voy a buscarlo y a rectificarlo, gracias.
En este blog también se encuentra el mismo post que tratamos aquí y los archivos de dicho script. Por si no encontráis los archivos… Saludos http://www.theblog.ca/mysql-email-backup
Gracias.