Foros del Web » Programando para Internet » PHP »

¿Hacer un BackUp? ... ¡Pero si es muy fácil!

Estas en el tema de ¿Hacer un BackUp? ... ¡Pero si es muy fácil! en el foro de PHP en Foros del Web. ¿Hacer un BackUp? ... ¡Pero si es muy fácil! El backup, dump o copia de respaldo de una base de datos puede hacerse a través ...
  #1 (permalink)  
Antiguo 16/03/2005, 10:27
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 19 años
Puntos: 0
¿Hacer un BackUp? ... ¡Pero si es muy fácil!

¿Hacer un BackUp? ... ¡Pero si es muy fácil!

El backup, dump o copia de respaldo de una base de datos puede hacerse a través de phpMyAdmin, del Admin del foro, de mySQL, etc... pero sea cual fuere el medio que se utilice, hay que configurar parámetros.
Para facilitar la cosa y evitar -en una tarea repetitiva como es un backup- tener que configurar parámetros cada vez, he creado este par de scripts complementarios que son el colmo de la simplificación: Dump y Download la Base de Datos - Restore la Base de Datos que, con un simple click son capaces de hacer lo que su propio nombre indica.


Su preparación es sencilla:

1.- Configurar en ambos scripts las cuatro variables:

$db_server = "la dirección de base de datos: mysql.webcindario.com o localhost o...";
$db_name = "el nombre de la base de datos";
$db_username = "el usuario";
$db_password = "el password";

2.- Crear en el server una carpeta con privilegios de escritura.
3.- Subir a esa carpeta ambos scripts.


Su funcionamiento es simple:

1.- Dump y Download la Base de Datos

- Cada vez que se lanza el script, se crea el Dump de la Base de Datos completa.
- El Dump se crea comprimido si el servidor tiene capacidad para ello.
- El Dump se crea con el nombre de la base de datos y extensión '.gz' o '.sql' según tenga el server o no, capacidad de compresión, respectivamente.
- El Dump creado se salva en la misma carpeta en que está el script.
- El Dump puede descargarse del server al ordenador desde la misma ventana del navegador.
- Cuando se lanza el script, no se obtiene el resultado en la ventana del navegador hasta que el dump finaliza. Eso significa que con una gran base de datos sin comprimir de 1000 Mb (1 Gb), por ejemplo, el resultado tardará en aparecer tres minutos aprox., dependiendo de la velocidad del server.
- Cuando se lanza el script, no cerrar ni hacer nada con esa ventana del navegador, hasta que el script concluya y muestre el resultado.

2.- Restore la Base de Datos

- Cada vez que se lanza el script, se borra la estructura de la base de datos y se restituye el contenido del dump que, con nombre igual al de la base de datos y extensión '.gz' o '.sql' según tenga el server o no, capacidad de compresión, respectivamente, está en la misma carpeta que el script.
- Cuando se lanza el script, no se obtiene el resultado en la ventana del navegador hasta que el restore finaliza.
- Cuando se lanza el script, no cerrar ni hacer nada con esa ventana del navegador, hasta que el script concluya y muestre el resultado.


· Los scripts procesan query a query, lo que significa que da igual el tamaño de la base de datos a dumpear o restorear... que puede ser de gigas.
· Naturalmente, el Dump resultante de "dump_db.php", esté o no comprimido, es estándar SQL susceptible de ser procesado por phpMyAdmin, mySQL, el Admin del foro o portal, etc.
· De igual forma, "restore_db.php" es capaz de restorear cualquier dump estándar SQL.
· Los scripts dumpean o restorean la base de datos sin importar si ésta pertenece a un foro y qué tipo de foro (phpBB, vBulletin, etc), a un portal y qué tipo de portal, etc... en síntesis, los scripts son universales.
· Se podría hacer más bonito y más complicado pero no merece la pena, de lo que se trata es de hacer el backup o restore de una base de datos en un simple click, no de hacer monadas.
· Distribuyo los scripts bajo los términos de la Licencia GNU de Documentación Libre (GFDL, GNU Free Documentation License).


Puede verse Dump y Download la Base de Datos en acción haciendo el backup de un foro: http://insidephp.webcindario.com/BackUp_db/dump_db.php
(Por zarones obvias, los passwords de los usuarios son ofuscados en el download)
(Por zarones obvias, los mensajes privados son removidos del download)

Naturalmente, si se hace pública la dirección de los scripts se está haciendo pública la base de datos: utilizar nombres imaginativos para la carpeta que los contiene y para ellos mismos, no es mala idea.

- Con este par de scripts es posible migrar un foro de un server a otro, en cuestión de minutos: Dump, Download, y Restore en el destino... haciendo lo mismo con el contenido del FTP
- Este par de scripts posibilita upgradear o updatear un foro de forma segura: Dump, salvar el FTP, aplicar el update... si no sale bién o no gusta el resultado, se vuelve al estado anterior con restore el FTP y Restore... y aquí no ha pasado nada.
- Con este par de scrits hacer el clon de un foro en el ordenador de casa para probar allí cosas antes de aplicarlas, es trivial: Dump, Download, meterlo en la carpeta del XP y Restore... sencillo como la vida misma.


Espero que les sea útil,
Un saludo.
Inside PHP


scripts y demás en: http://insidephp.webcindario.com

Dump y Download la Base de Datos tiene este aspecto:

...


Restore la Base de Datos tiene este aspecto:

...


Download los scripts: dump_y_restore_db.zip

(Agradecería al Admin que eliminara el hilo que, con el mismo título está en "Aplicaciones prefabricadas...". Gracias)
  #2 (permalink)  
Antiguo 16/03/2005, 10:45
 
Fecha de Ingreso: febrero-2005
Mensajes: 396
Antigüedad: 19 años, 1 mes
Puntos: 1
Parece algo bastante interesante. Muchas gracias por tomarte la molestia de preparar este script, que no te quepa la menor duda voy a "empollarme" para ver como realizar este tipo de tareas.

En cualquier caso, me ha surgido una duda de algo que me pasó hace un tiempo.

Muchos servidores tienen configurado php con un tiempo de ejecución máximo. Si la base de datos es muy grande puede que no de tiempo a hacer la copa o restaurarla de "un golpe". ¿Has pensado en la posibilidad de hacerlo de manera "fraccionada" o algo así?

No es un crítica, simplemente una duda y posible mejora que podría pensarse en implementar para un futura versión (si es que no lo has preparado ya!).

Un saludo

Zerjillo
  #3 (permalink)  
Antiguo 16/03/2005, 10:59
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 19 años
Puntos: 0
Hola,

No es necesario fraccionar, observa el "@set_time_limit( 0 );" en los fuentes.
De hecho, hice este par de scripts para backupear una base de datos gigantesca de 12 Gb.

Un saludo.

Última edición por Inside PHP; 16/03/2005 a las 11:01
  #4 (permalink)  
Antiguo 16/03/2005, 13:17
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 19 años
Puntos: 0
Un par de cosillas se podrían implementar en los scripts actuales...

- Una sería poder borrar el file del Dump para liberar espacio y/o evitar que cayera en malas manos...
- Otra sería proteger los scrips con Realm, del estilo de esto: http://insidephp.webcindario.com/Bac...restore_db.php
- Otra sería poder enviar el Dump por mail a una dirección de correo...
- Otra sería poder enviar el Dump por FTP a un lugar concreto...

Lo que no sé es si merece la pena.

Un saludo
Inside PHP


(Soporte y download de nuevas versiones, en: http://insidephp.webcindario.com )
  #5 (permalink)  
Antiguo 17/03/2005, 00:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 19 años
Puntos: 0
Hola,

He añadido la protección por password de los scripts, lo que significa que su acceso es seguro.

Con ello este tema queda cerrado.

En http://insidephp.sytes.net/ están las dos versiones y allí daré soporte por algún tiempo... después cerraré ese foro o simplemente lo dejaré morir de inanición.

Un saludo
  #6 (permalink)  
Antiguo 17/03/2005, 02:05
 
Fecha de Ingreso: febrero-2005
Mensajes: 396
Antigüedad: 19 años, 1 mes
Puntos: 1
Perfecto!

Muchas gracias por tu esfuerzo!

Un saludo

Zerjillo
  #7 (permalink)  
Antiguo 17/03/2005, 07:45
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Buenas...
Estoy probando la nueva versión pero parece que no funciona lo de las contraseñas. Entro al script y en vez de que me salga la ventanita de poner user y password, que supongo que es lo que debe salir, da un error de Warning: "Cannot modify header information - headers already sent by" en las líneas 55, 56 y 58, y finalmente dice "Usuario/contraseña equivocado. Acceso denegado."
¿Algún bug? Pues me pasa tanto en local como en remoto...
¡Saludos!
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #8 (permalink)  
Antiguo 17/03/2005, 08:05
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Me he fijado que se soluciona eliminando unas líneas en blanco que hay antes de esas otras, entre el ?> y el <?php que viene antes, pero entonces me está pidiendo usuario y contraseña de forma continua... tres veces, entonces da error y me dice que son incorrectos, a pesar de que los cambién y los estoy poniendo bien...
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.

Última edición por ferny; 17/03/2005 a las 08:07
  #9 (permalink)  
Antiguo 17/03/2005, 08:27
 
Fecha de Ingreso: marzo-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
esta muy interesante lo que haz hecho, pero no me funciona el link de descarga del archivo.

Muchas gracias
  #10 (permalink)  
Antiguo 17/03/2005, 17:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 19 años
Puntos: 0
Ya está la versión corregida (1.1.1) en http://insidephp.sytes.net... en "Files".

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:18.