Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Backup de la base de datos

Estas en el tema de Backup de la base de datos en el foro de PHP en Foros del Web. Hola buenas, es la primera vez que tengo que hacer esto y no se muy bien como. Voy a realizar una copia de la base ...
  #1 (permalink)  
Antiguo 11/12/2013, 06:32
 
Fecha de Ingreso: noviembre-2012
Mensajes: 65
Antigüedad: 11 años, 5 meses
Puntos: 2
Backup de la base de datos

Hola buenas, es la primera vez que tengo que hacer esto y no se muy bien como.

Voy a realizar una copia de la base de dtos y descargar el fichero generado, el código que se me ha ocurrido es este

Código PHP:
<?
system
("mysqldump --host=localhost --user=root --password=260889 > nfc.sql");


$ruta "nfc.sql";
    
    if (
is_file($ruta))
    {
       
header('Content-Type: application/force-download');
       
header('Content-Disposition: attachment; filename='.$ruta);
       
header('Content-Transfer-Encoding: binary');
       
header('Content-Length: '.filesize($ruta));
    
       
readfile($ruta);
       
    }
    else{
       exit();
    }
?>
La primera línea es de un ejemplo que he encontrado por internet para generar la copia, pero hay un problema, al llegar al símbolo > PHP se cierra y si lo ejecuto se muestra esto en el servidor

." nfc.sql"); echo "Fin. Puede recuperar la base por FTP"; $ruta = "nfc.sql"; $fichero=$ruta; if (is_file($ruta)) { header('Content-Type: application/force-download'); header('Content-Disposition: attachment; filename='.$fichero); header('Content-Transfer-Encoding: binary'); header('Content-Length: '.filesize($ruta)); readfile($ruta); } else{ exit(); } ?>

Vamos, el código sin procesar a partir de dicho símbolo... Me podéis echar una mano? muchas gracias
  #2 (permalink)  
Antiguo 11/12/2013, 07:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Backup de la base de datos

Fijate que se puede leer en el manual


Cita:
...
La llamada a system() también intenta volcar automáticamente el búfer de salida del servidor web después de cada línea de salida, si PHP está corriendo como un módulo de servidor.
...
Es muy posible que no tengas permisos sobre el servidor para crear archivos, que es lo que estas haciendo con la ultima parte "> nfc.sql", practicamente seguro que no los tienes sobre el directorio de instalación de mysqldump

Fijate que la primera parte del lo que te muestra debe ser la respuesta de sistem

echo "Fin. Puede recuperar la base por FTP";

o al menos no lo genera el script que has copiado, no se si lo has posteado entero.

Asegurate de tener permisos en la ruta que intentas crear el fichero .sql.


Aqui t¡enes un link interesante para el tema

http://www.dreamingbytes.com/backup-...con-mysqldump/

puedes usar mysqldump
instalado en tu maquina local contra la base de datos remota... otra vez puede haber problemas de permisos.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 11/12/2013 a las 07:13
  #3 (permalink)  
Antiguo 11/12/2013, 15:01
 
Fecha de Ingreso: noviembre-2012
Mensajes: 65
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Backup de la base de datos

Hola buenas, el tema de que me saliese el código raro es porque la sentencia estaba mal, no habia puesto la base de datos.

He mirado el artículo asi por encima pero no es para PHP.. Bueno cuento mi breve avance.

He modificado el código:


Código PHP:
echo "Su base está siendo salvada.......";
system("mysqldump --host=localhost --user=root --password=260889 nfc > nfc.sql");
echo 
"Compresión del archivo.....";
system("gzip nfc.sql");
echo 
"Fin. Puede recuperar la base por FTP"
ahora si se me crea el archivo... pero en blanco!! permisos de escritura si tengo
  #4 (permalink)  
Antiguo 11/12/2013, 17:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Backup de la base de datos

Pues probemos una de dos cosas:
opción 1: Con parametro de retorno:
Código PHP:
echo "Su base está siendo salvada.......";
system("mysqldump --host=localhost --user=root --password=260889 nfc > nfc.sql"$retorno);
echo 
$retorno;
echo 
"Compresión del archivo.....";
system("gzip nfc.sql");
echo 
"Fin. Puede recuperar la base por FTP"
Opción 2: Ver lo que sucede al final:
Código PHP:
echo "Su base está siendo salvada.......";
passthru("mysqldump --host=localhost --user=root --password=260889 nfc > nfc.sql"$retorno);
echo 
$retorno;
echo 
"Compresión del archivo.....";
system("gzip nfc.sql");
echo 
"Fin. Puede recuperar la base por FTP"
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/12/2013, 05:58
 
Fecha de Ingreso: noviembre-2012
Mensajes: 65
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Backup de la base de datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Pues probemos una de dos cosas:
opción 1: Con parametro de retorno:
Código PHP:
echo "Su base está siendo salvada.......";
system("mysqldump --host=localhost --user=root --password=260889 nfc > nfc.sql"$retorno);
echo 
$retorno;
echo 
"Compresión del archivo.....";
system("gzip nfc.sql");
echo 
"Fin. Puede recuperar la base por FTP"
Opción 2: Ver lo que sucede al final:
Código PHP:
echo "Su base está siendo salvada.......";
passthru("mysqldump --host=localhost --user=root --password=260889 nfc > nfc.sql"$retorno);
echo 
$retorno;
echo 
"Compresión del archivo.....";
system("gzip nfc.sql");
echo 
"Fin. Puede recuperar la base por FTP"

De retorno me devuelve 1...
  #6 (permalink)  
Antiguo 12/12/2013, 06:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Backup de la base de datos

Eso implicaría un TRUE o que la operación se ejecutó bien.
¿Las dos devuelven lo mismo? ¿Tienen el mismo comportamiento?

Por otro lado, un fallo como el que describes habitualmente sucede cuando la base de datos no existe o no tiene el mismo nombre que supones que tiene. En algunos servidores basados en Linux puede que no reconozca alguna cosa porque distigue entre mayúsculas y minúsculas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 12/12/2013, 08:28
 
Fecha de Ingreso: noviembre-2012
Mensajes: 65
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Backup de la base de datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Eso implicaría un TRUE o que la operación se ejecutó bien.
¿Las dos devuelven lo mismo? ¿Tienen el mismo comportamiento?

Por otro lado, un fallo como el que describes habitualmente sucede cuando la base de datos no existe o no tiene el mismo nombre que supones que tiene. En algunos servidores basados en Linux puede que no reconozca alguna cosa porque distigue entre mayúsculas y minúsculas.
ante todo gracias por la ayuda.

En primer lugar: Sí, ambas instrucciones me devuelven los mismo.

Segundo, la base de datos está en wamp (sobre windows). Al terminar el proyecto todo lo pasaré a un servidor con Linux.
La bbdd está creada en PhpMyAdmin, tiene el nombre nfc (en minúsculas). No se si esto puede arrojar algo de información del error, es la primera vez que intento hacer un Backup de una base de datos así que pido perdón por mi ignorancia sobre este tema.


Como ya he dicho, se crea el fichero, pero vacío, sin ningún tipo de contenido.
  #8 (permalink)  
Antiguo 12/12/2013, 12:04
 
Fecha de Ingreso: noviembre-2012
Mensajes: 65
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Backup de la base de datos

Hola buenas tardes/noches, aunque no he conseguido ver por qué no funcionaba me he encontrado este código por ahí, el cual me funciona perfectamente, en cuestión está en esta página

http://www.daniloaz.com/es/560/progr...mysql-con-php/

sólo con cambiar los datos de tu usuario, passwd y eso al principio del script te lo genera perfectamente.
  #9 (permalink)  
Antiguo 13/12/2013, 02:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Backup de la base de datos

Muy interesante gracias por postearlo.

Habria que completarlo para que tambien haga el backup de otros objetos de la base tipo vistas, procedures y triggers...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: backup, sql
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:55.