Foros del Web » Programando para Internet » PHP »

dump y restore

Estas en el tema de dump y restore en el foro de PHP en Foros del Web. tengo un problema con un backup de una base de datos de mysql que quiero hacer desde php ya tengo mi codigo para hacerlo el ...
  #1 (permalink)  
Antiguo 11/06/2009, 02:30
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 10 meses
Puntos: 0
dump y restore

tengo un problema con un backup de una base de datos de mysql que quiero hacer desde php ya tengo mi codigo para hacerlo el cual es:

<?php
$filename = "fichero.sql";
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");


$usuario = "root";
$passwd = "";
$bd = "db_villagracia";
$llamada='"c:\\Archivos de programa\\MySQL\\MySQL Server 5.0\\bin\\mysqldump.exe"';
//windows
$executa = "$llamada -u $usuario --password=$passwd --opt $bd";
system($executa, $resultado);

//$executa = "mysqldump -u $usuario --password=$passwd --opt $bd";
//system($executa, $resultado);


if (!$resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }

?>



Uno de los problemas es que me sale un cuadro de download para descargar la base de datos lo cual quiere decir que cualquier persona que haga el backup va a poder tener mi base de datos, como hago para que no aparezca este cuadro y darle una direccion fija dentro del mismo servidor de la base de datos, o dentro del servidor donde tengo mis archivos php.
Alguien me podria ayudar a hacer el restore de el archivo que genera porfavor??, gracias
  #2 (permalink)  
Antiguo 11/06/2009, 02:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: dump y restore ayuda con esto!!!

simple, los header() que usas son para descargar archivos... no los uses!!

y usa algún procedimiento, con fopen/fwrite/fclose para escribir el archivo...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/06/2009, 15:01
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: dump y restore ayuda con esto!!!

Gracias, pateketrueke ya encontre la solucion, y si eran los header ya resolvi ese problema ahora no se como hago el restore, si alguien me puede ayudar??
  #4 (permalink)  
Antiguo 11/06/2009, 22:02
 
Fecha de Ingreso: mayo-2009
Ubicación: Colombia
Mensajes: 21
Antigüedad: 15 años
Puntos: 0
Respuesta: dump y restore ayuda con esto!!!

te dejo el codigo del restore que utilizo, te permite buscar la copia de la base de datos .sql

Código restore.php:
Ver original
  1. <?php
  2.     if (!isset ($_FILES["ficheroDeCopia"])){ // Se comprueba si ya existe un fichero enviado o aun no.
  3. /* Si aun no existe un fichero enviado, se define un formulario para que el usuario
  4. pueda enviarlo. Este debe ser el fichero de copia de seguridad con la consulta SQL para
  5. recrear la base de datos perdida o estropeada.
  6. En el formulario se deben incluir las clases que definen el aspecto de los distintos elementos,
  7. a partir del fichero de estilos CSS.*/
  8.       $contenidoDeFormulario="  <form action='restore.php' method='post' enctype='multipart/form-data' name='formularioDeRestauracion'";
  9.       $contenidoDeFormulario.="id='formularioDeRestauracion'>\n";
  10.       $contenidoDeFormulario.="    <table width='600' border='0' class=''>\n";
  11.       $contenidoDeFormulario.="      <tbody class=''>\n";
  12.       $contenidoDeFormulario.="        <tr>\n";
  13.       $contenidoDeFormulario.="          <td height='40' colspan='4' class=''><center><b>RESTAURACI&Oacute;N DE COPIA DE SEGURIDAD DE MySQL </td>\n";
  14.       $contenidoDeFormulario.="        </tr>\n";
  15.       $contenidoDeFormulario.="        <tr>\n";
  16.       $contenidoDeFormulario.="          <td width='82' class=''>&nbsp;</td>\n";
  17.       $contenidoDeFormulario.="          <td colspan='2' class=''><font face='georgia'>Indique el origen del archivo de copia: </td>\n";
  18.       $contenidoDeFormulario.="          <td width='60' class=''>&nbsp;</td>\n";
  19.       $contenidoDeFormulario.="        </tr>\n";
  20.       $contenidoDeFormulario.="        <tr>\n";
  21.       $contenidoDeFormulario.="          <td class=''>&nbsp;</td>\n";
  22.       $contenidoDeFormulario.="          <td colspan='2' class=''><input type='file' name='ficheroDeCopia' id='ficheroDeCopia'";
  23.       $contenidoDeFormulario.="size='50'></td>\n";
  24.       $contenidoDeFormulario.="          <td class=''>&nbsp;</td>\n";
  25.       $contenidoDeFormulario.="        </tr>\n";
  26.       $contenidoDeFormulario.="        <tr>\n";
  27.       $contenidoDeFormulario.="          <td class=''>&nbsp;</td>\n";
  28.       $contenidoDeFormulario.="          <td colspan='2' class=''>&nbsp;</td>\n";
  29.       $contenidoDeFormulario.="          <td class=''>&nbsp;</td>\n";
  30.       $contenidoDeFormulario.="        </tr>\n";
  31.       $contenidoDeFormulario.="        <tr>\n";
  32.       $contenidoDeFormulario.="          <td class=''>&nbsp;</td>\n";
  33.       $contenidoDeFormulario.="          <td width='204' align='center' class=''><input name='envio' type='submit' ";
  34.       $contenidoDeFormulario.="id='envio' value='Aceptar'></td>\n";
  35.       $contenidoDeFormulario.="          <td width='226' align='center' class=''><input name='regreso' type='button' ";
  36.       $contenidoDeFormulario.="onClick='javascript:botonCancelar();'";
  37.       $contenidoDeFormulario.="id='regreso' value='Cancelar'></td>\n";
  38.       $contenidoDeFormulario.="          <td class=''>&nbsp;</td>\n";
  39.       $contenidoDeFormulario.="        </tr>\n";
  40.       $contenidoDeFormulario.="      </tbody>\n";
  41.       $contenidoDeFormulario.="    </table>\n";
  42.       $contenidoDeFormulario.="  </form>\n";
  43. /* Se muestra el formulario. */
  44.       echo ($contenidoDeFormulario);
  45.     } else {
  46. /* Si el fichero ya existe, se efectúa la carga del mismo y se inicia su procesado. */
  47. /* Empezamos grabando el archivo de copia en el servidor. */
  48.       $archivoRecibido=$_FILES["ficheroDeCopia"]["tmp_name"];
  49.       $destino="ficheroParaRestaurar.sql";
  50.        echo "<tr><td><br><br><center><font face='verdana'><FONT FACE SIZE='6'>Los datos han sido restaurados exitosamente<br><br></b>";
  51.       if (!move_uploaded_file ($archivoRecibido, $destino)){
  52.         die ("<center>SELECCIONE LA COPIA DE SEGURIDAD A RESTAURAR E INTÉNTE DE NUEVO.");
  53.        
  54.        
  55.       }
  56.  
  57. /* DATOS QUE CAMBIAN EN CADA INSTALACIÓN DE LA APLICACIÓN. */
  58.       $usuario = "adsisena_mosq";
  59.   $clave = "adsi";
  60.   $servidor = "localhost";
  61.   $baseDeDatos = "adsisena_voto";
  62. /* AQUÍ TERMINAN LOS DATOS QUE CAMBIAN EN CADA INSTALACIÓN DE LA APLICACIÓN. */
  63. /* Se conecta con la base de datos elegida. */
  64.       $conexion = mysql_connect($servidor,$usuario,$clave) or die(mysql_error());
  65.       @mysql_select_db($baseDeDatos,$conexion);
  66.  
  67. /* Una vez subido el fichero al servidor, se abre para su lectura, línea a linea. */
  68.       $manejadorDeFichero=fopen ("ficheroParaRestaurar.sql", "r");
  69. /* Se inicializa una variable que se usará para almacenar las consultas antes de
  70. ejecutarlas sobre la base de datos. */
  71.       $consultaSQL="";
  72. /* Mediante un bucle se va a leer el fichero hasta encontrar el final del mismo. */
  73.       while (!feof($manejadorDeFichero)){
  74. /* Se almacena el contenido, línea a línea. */
  75.         $lectura=fgets($manejadorDeFichero);
  76. /* A continuación se comprueba si la línea empieza por "# ". Esto indica que se trata de
  77. un comentario. En ese caso se pasa a la siguiente iteración, ignorando toda esa línea
  78. recién leida. También se pasa a la siguiente línea si la que estamos leyendo no tiene más
  79. contenido que el salto de línea.*/
  80.         if (substr ($lectura,0,2)=="# " || $lectura=="\n") continue;
  81. /* Se determina la longitud de la línea restando el carácter de salto. */
  82.         $longitudLeida=strlen ($lectura)-1;
  83. /* Se elimina el carácter de salto de línea */
  84.         $lectura=chop($lectura);
  85.        
  86. /* Llegados a este punto, la línea leida es parte de una consuilta SQL,
  87. por lo que se incorpora a la variable que contendrá la misma para su
  88. posterior ejecución. */
  89.         $consultaSQL.=$lectura;
  90.        
  91. /* A continuación se comprueba si el último carácter de la ínea es un punto y coma,
  92. lo que determina el final de una consulta SQL. Dado el formato que ha recibido el fichero,
  93. el último carácter puede no ser un caracter válido, por lo que se comprueba si el punto y coma
  94. el último o el penúltimo. */
  95.  
  96.         if (substr($lectura, $longitudLeida-2, 1)==";" || substr($lectura, $longitudLeida-1, 1)==";"){
  97.        
  98. /* Llegados aqui, ya tenemos la consulta SQL lista para su ejecución. */
  99.           mysql_query($consultaSQL,$conexion);
  100.          
  101.           if (mysql_errno()!=0){ // Si se produce algún error, a pesar de todo.
  102.             $mensajeDeError="SE HA PRODUCIDO EL ERROR SIGUIENTE<br>";
  103.             $mensajeDeError.=mysql_errno()."***".mysql_error()."<br>";
  104.             $mensajeDeError.="NO SE HA PODIDO COMPLETAR LA OPERACIÓN.";
  105.            
  106.             die ($mensajeDeError);
  107.           }
  108.          
  109. /* Ahora e limpia la variable donde se almacena la consulta SQL, para empezar con la siguiente. */
  110.           $consultaSQL="";
  111.         }
  112.       }
  113.       fclose ($manejadorDeFichero); // Se cierra el fichero.
  114. /* Se elimina el fichero del servidor. */
  115.    
  116.     }
  117.   ?>

Debes crear un archivo llamado ficheroParaRestaurar.sql y dejarlo en blanco.
Si no te sirve con la opción de examinar avisas y posteo uno que te restaura automaticamente la ultima copia hecha....
  #5 (permalink)  
Antiguo 13/06/2009, 18:07
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: dump y restore

Gracias jdarkname, Gracias por la ayuda a los dos!!, se los agradezco mucho
  #6 (permalink)  
Antiguo 16/06/2009, 20:23
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: dump y restore

tengo un nuevo problema el backup lo hace pero solamente cuando los archivos php y la base de datos estan en el mismo servidor, necesito que haga el backup pero tengo la base de datos y los archivos php en servidores diferentes, de antemano les agradezco
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 23:15.