Ver Mensaje Individual
  #33 (permalink)  
Antiguo 09/01/2008, 01:17
Avatar de alienmaster
alienmaster
 
Fecha de Ingreso: septiembre-2006
Mensajes: 16
Antigüedad: 18 años, 2 meses
Puntos: 2
Re: Backup de BD -> YoDumpeo 1.0b

Me e permitido hacer un mod del script, la novedad es que los daots de la DB los introducimos desde un formulario, mas comodo :P
Código PHP:
<?php

/*
YoDumpeo! 1.5 - Modificacion del script original por aLiEnMaStEr
-Info: Modificacion a partir de la version 1.0 del script, +Info: http://www.forosdelweb.com/f18/backup-bd-yodumpeo-1-0b-166532/
-MOD INFO ¿Que incluye la modificacion?: Pues etsa mod es muy simple, lo que incluye es una formulario desde el cual introducimos los<br>
 datos del SQL como la tabla, user, pass y el host, para tener un uso mas rapido del script.
*/

if($_POST['host']){

/* Usuario para la conexion a Mysql. */
$usurio $_POST['usurio'];
/* Password para la conexion a Mysql. */
$passwd $_POST['passwd'];
 
/* Host para la conexion a Mysql. */
$host $_POST['host'];
/* Base de Datos que se seleccionará. */
$bd $_POST['bd'];
/* Nombre del fichero que se descargará. */
$nombre "dump.txt";
/* Determina si la tabla será vaciada (si existe) cuando  restauremos la tabla. */            
$drop false;
/* 
* Array que contiene las tablas de la base de datos que seran resguardadas.
* Puede especificarse un valor false para resguardar todas las tablas
* de la base de datos especificada en  $bd.

* Ejs.:
* $tablas = false;
*    o
* $tablas = array("tabla1", "tabla2", "tablaetc");

*/
$tablas false;
/* 
* Tipo de compresion.
* Puede ser "gz", "bz2", o false (sin comprimir)
*/
$compresion false;

/* Conexion y eso*/
$conexion mysql_connect($host$usurio$passwd)
or die(
"No se conectar con el servidor MySQL: ".mysql_error());
mysql_select_db($bd$conexion)
or die(
"No se pudo seleccionar la Base de Datos: "mysql_error());


/* Se busca las tablas en la base de datos */
if ( empty($tablas) ) {
    
$consulta "SHOW TABLES FROM $bd;";
    
$respuesta mysql_query($consulta$conexion)
    or die(
"No se pudo ejecutar la consulta: ".mysql_error());
    while (
$fila mysql_fetch_array($respuestaMYSQL_NUM)) {
        
$tablas[] = $fila[0];
    }
}


/* Se crea la cabecera del archivo */
$info['dumpversion'] = "1.1b";
$info['fecha'] = date("d-m-Y");
$info['hora'] = date("h:m:s A");
$info['mysqlver'] = mysql_get_server_info();
$info['phpver'] = phpversion();
ob_start();
print_r($tablas);
$representacion ob_get_contents();
ob_end_clean ();
preg_match_all('/(\[\d+\] => .*)\n/'$representacion$matches);
$info['tablas'] = implode(";  "$matches[1]);
$dump = <<<EOT
# +===================================================================
# | YoDumpeo! 
{$info['dumpversion']}
# | por fran86 <[email protected]>
# |
# | Generado el 
{$info['fecha']} a las {$info['hora']} por el usurio '$usurio'
# | Servidor: 
{$_SERVER['HTTP_HOST']}
# | MySQL Version: 
{$info['mysqlver']}
# | PHP Version: 
{$info['phpver']}
# | Base de datos: '$bd'
# | Tablas: 
{$info['tablas']}
# |
# +-------------------------------------------------------------------

EOT;
foreach (
$tablas as $tabla) {
    
    
$drop_table_query "";
    
$create_table_query "";
    
$insert_into_query "";
    
    
/* Se halla el query que será capaz vaciar la tabla. */
    
if ($drop) {
        
$drop_table_query "DROP TABLE IF EXISTS `$tabla`;";
    } else {
        
$drop_table_query "# No especificado.";
    }

    
/* Se halla el query que será capaz de recrear la estructura de la tabla. */
    
$create_table_query "";
    
$consulta "SHOW CREATE TABLE $tabla;";
    
$respuesta mysql_query($consulta$conexion)
    or die(
"No se pudo ejecutar la consulta: ".mysql_error());
    while (
$fila mysql_fetch_array($respuestaMYSQL_NUM)) {
            
$create_table_query $fila[1].";";
    }
    
    
/* Se halla el query que será capaz de insertar los datos. */
    
$insert_into_query "";
    
$consulta "SELECT * FROM $tabla;";
    
$respuesta mysql_query($consulta$conexion)
    or die(
"No se pudo ejecutar la consulta: ".mysql_error());
    while (
$fila mysql_fetch_array($respuestaMYSQL_ASSOC)) {
            
$columnas array_keys($fila);
            foreach (
$columnas as $columna) {
                if ( 
gettype($fila[$columna]) == "NULL" ) {
                    
$values[] = "NULL";
                } else {
                    
$values[] = "'".mysql_real_escape_string($fila[$columna])."'";
                }
            }
            
$insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", "$values).");\n";
            unset(
$values);
    }
    
$dump .= <<<EOT

# | Vaciado de tabla '$tabla'
# +------------------------------------->
$drop_table_query


# | Estructura de la tabla '$tabla'
# +------------------------------------->
$create_table_query


# | Carga de datos de la tabla '$tabla'
# +------------------------------------->
$insert_into_query

EOT;
}

/* Envio */
if ( !headers_sent() ) {
    
header("Pragma: no-cache");
    
header("Expires: 0");
    
header("Content-Transfer-Encoding: binary");
    switch (
$compresion) {
    case 
"gz":
        
header("Content-Disposition: attachment; filename=$nombre.gz");
        
header("Content-type: application/x-gzip");
        echo 
gzencode($dump9);
        break;
    case 
"bz2"
        
header("Content-Disposition: attachment; filename=$nombre.bz2");
        
header("Content-type: application/x-bzip2");
        echo 
bzcompress($dump9);
        break;
    default:
        
header("Content-Disposition: attachment; filename=$nombre");
        
header("Content-type: application/force-download");
        echo 
$dump;
    }
} else {
    echo 
"<b>ATENCION: Probablemente ha ocurrido un error</b><br />\n<pre>\n$dump\n</pre>";
}

}

echo 
"<form name='form1' method='post' action=''>  <table width='400' border='0' cellspacing='0' cellpadding='0'>  <tr>  <td><strong><font size='4' face='Arial, Helvetica, sans-serif'>YoDumpeo! 1.5 - MOD By aLiEnMaStEr</font></strong></td>  </tr>  <tr>  <td><table width='400' border='0' cellspacing='0' cellpadding='0'>  <tr> <td><font size='2' face='Arial, Helvetica, sans-serif'>Usuario:</font></td>  <td><font size='2' face='Arial, Helvetica, sans-serif'> <input name='usurio' type='text' id='usurio'>  </font></td>  </tr>  <tr> <td><font size='2' face='Arial, Helvetica, sans-serif'>Password:</font></td>  <td><font size='2' face='Arial, Helvetica, sans-serif'> <input name='passwd' type='text' id='passwd'>  </font></td>  </tr>  <tr> <td><font size='2' face='Arial, Helvetica, sans-serif'>Base de Datos:</font></td>  <td><font size='2' face='Arial, Helvetica, sans-serif'> <input name='bd' type='text' id='db'>  </font></td>  </tr>  <tr> <td><font size='2' face='Arial, Helvetica, sans-serif'>Host:</font></td>  <td><font size='2' face='Arial, Helvetica, sans-serif'> <input name='host' type='text' id='host' value='localhost'>  </font></td>  </tr>  <tr> <td colspan='2'><font size='2' face='Arial, Helvetica, sans-serif'> <input type='submit' name='Submit' value='Enviar'>  </font></td>  </tr>  </table></td>  </tr>  </table> </form>";

?>

Última edición por alienmaster; 09/01/2008 a las 01:44