Tutorial Descargar base de datos con un solo click [script sencillo]

GabrielSeo

Estafador
Mensajes
421
Puntuación de reacción
0
En algunas ocasiones tenemos problemas con nuestro proveedor de hosting y perdemos el acceso a cPanel pero aveces el acceso vía FTP no y tenemos la necesidad de descargar todos nuestros datos incluyendo la base de datos que es muy importante.
El día de hoy te vengo a ayudar para evitar dolores de cabeza con esté script muy sencillo que encontré por la red :)

Lo único que necesitas hacer es acceder al sitio vía FTP y crear un archivo con la extensión .php, ejemplo: script.php

E insertar el siguiente código que ayudará a descargar nuestra base de datos:

PHP:
 <?php 
/* Usuario para la conexion a Mysql. */ 
$usurio = "root"; 
/* Password para la conexion a Mysql. */ 
$passwd = "root"; 
 /* Host para la conexion a Mysql. */ 
$host = "localhost"; 
/* Base de Datos que se seleccionará. */ 
$bd = "test"; 
/* 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($respuesta, MYSQL_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 <fran86@myrealbox.com> 
# | 
# | 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($respuesta, MYSQL_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($respuesta, MYSQL_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($dump, 9); 
        break; 
    case "bz2":  
        header("Content-Disposition: attachment; filename=$nombre.bz2"); 
        header("Content-type: application/x-bzip2"); 
        echo bzcompress($dump, 9); 
        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>"; 
} 
?>

Tendremos que editar los datos que aparecen en los primeros datos como el user, pass, name.

Recomendaciones:


Si no sabes los datos de tú base de datos, una vez que hayas descargado los archivos de tú script (CMS u otro) tendrás que buscar los ficheros que contienen los datos de cuando se instalo (en wordpress está en el archivo wp-config.php).

El script te generará la base de datos que tú le indiques y en ocasiones tendrás que subir la base de datos manualmente a tú otro host.

Recuerda: tendrás que crear un archivo con la extensión .php y subirlo vía FTP con la IP de tú host e insertar el código que te he proporcionado, ejecutarlo y descargar la base de datos.

Y pues no tiene muchas complicaciones, no se necesita ser un programador experto para poder usar el script pero si necesitas ayuda solo comentalo y con gusto te ayudo :)

Feliz navidad a todos los usuarios de foro20!.
 
Última edición:

Classy

Piedra
Usuario de Piedra
Mensajes
66
Puntuación de reacción
0
Bastante util, para rescatar paginas en problemas con el hosting.

gracias por compartirlo.

slaudos
 
Mensajes
166
Puntuación de reacción
0
Muy útil y es mas útil para bases de datos pesadas!!

Gracias!!
 
Mensajes
193
Puntuación de reacción
0
¿Eso no aparece en el buscador de Google verdad? Me refiero a que no es fácil a simple vista ya que alguien me hace auditoría o no sé, mira en site:miweb.com o en robots ese .php y me sale haciendo backup fácilmente.
 

GabrielSeo

Estafador
Mensajes
421
Puntuación de reacción
0
¿Eso no aparece en el buscador de Google verdad? Me refiero a que no es fácil a simple vista ya que alguien me hace auditoría o no sé, mira en site:miweb.com o en robots ese .php y me sale haciendo backup fácilmente.

Obviamente una vez que hayas ejecutado el script tendrás que borrar el archivo para evitar que personas accedan a el :)
 

aleatorio

Piedra
Usuario de Piedra
Mensajes
29
Puntuación de reacción
0
Muy buen aporte, muchas gracias, haberlo conocido antes cuándo utilizaba hosts gratuitos :(
 

Steeep

Cobre
Usuario de Bronce
Mensajes
607
Puntuación de reacción
0
Tu ética qué??

Comenté que el código me lo encontré por la red y no lo vi ahí :(

¿Ahora me demandarás por compartir?, si claro :sisi1:


Por la boca muere el pez estimado, ¿podrías explicarme entonces porque tiene créditos a tu nombre?

Cito:
# +===================================================================
# | ¡TODO LISTO!
{$info['dumpversion']}
# | por GabrielSeo <gabrielseo.com>

Saludetes jiji
 
Mensajes
1
Puntuación de reacción
0
Hola amigo. Como corro el script? Desde donde y como hacerlo. No se nada de bbdd gracias!
 
Arriba