lunes, 26 de septiembre de 2011

Backup de mysql con php

Valencia, 26/09/2011 Gatsu

Hay algunos hostings que generan backups de ficheros y bases de datos de forma automática, otros no, como es mi caso, y aunque no me he puesto a buscar como hacer un backup de los archivos de mi hosting (no creo que sea complicado) si que he encontrado la manera de hacer copias de seguridad de mi base de datos mysql con un script de php. Este script lo he copiado de "foros del web" en donde explica bastante bien como generar el backup, y además descargarlo a tu escritorio o donde quieras, incluso puedes comprimirlo a bzip2 o gzip.

Este post no tendría ninguna utilidad si se quedase en ello, y yo he modificado el script (a parte de por un error que me daba) para que me haga la copia de seguridad dentro del hosting. ¿Para qué? Porque utilizar un cron job que, por ejemplo, se ejecute una vez cada semana y te guarde el archivo sql en una carpeta protegida del hosting lo veo una buena idea (de carpetas protegidas estoy mirándolo, he visto cosas por ahí pero aún no me he puesto con ello).

A partir del código de "foros del web" comentar la parte de "Envío" y sustituirla por:

$abrirArchivo = fopen("backupDB/$nombre", "w");
fwrite($abrirArchivo, $dump);
fclose($abrirArchivo);
Recomiendo añadir a la variable nombre la fecha y hora del servidor para que no machaque el mismo archivo una y otra vez:
$nombre = date("d-m-Y")."-".date("h:m:s A")."-dump.sql"; 
Y por último, sustituir los comentarios en "#" por "--" y los EOT por comillas dobles, así me he generado una copia de seguridad y la he restaurado en la base de datos, con resultados favorables.

ACTUALIZACIÓN:

Comprobado, proteger una carpeta con contraseña y hacer que algún fragmento de código quiera recurrir a dicha carpeta, no podrá.