09/01/2008, 01:17
|
| | | 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($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 <[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($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>"; }
}
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 |