Crear backup sql desde php
Hola a todos! Buscando por internet encontré un pequeño script para crear una copia de seguridad de tu sql.
Os lo dejo por aquí por si es útil para alguien :)
Os lo dejo por aquí por si es útil para alguien :)
<?php //aca los parametros de conexion, si tienes aparte la conexión , solo incluyuela $usuario="tu_usuario"; $passwd="tu_password"; $host="localhost"; $bd="tu_base_datos"; $nombre="backup.txt"; //Este es el nombre del archivo a generar /* Determina si la tabla será vaciada (si existe) cuando restauremos la tabla. */ $drop = false; $tablas = false; //tablas de la bd // Tipo de compresion. // Puede ser "gz", "bz2", o false (sin comprimir) $compresion = false; /* Conexion */ $conexion = mysql_connect($host, $usuario, $passwd) or die("No se puede 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 # +=================================================================== # | # | Generado el {$info['fecha']} a las {$info['hora']} # | 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>"; } ?>
Respuesta #1
buena pinta, gracias por compartir!
0
Puntos
Puntos
Por alber hace 90 meses
Administrador
Respuesta #2
excelente aporte con tu permiso zapikero lo voy a subir aquí tambien para aquellos que tenga formato mysqli.
0
Puntos
Puntos
Por Dannus hace 90 meses
Avanzado
Respuesta #3
<?php $hostname_db = "localhost"; $database_conexion = "tu_base_de_datos"; $username_db = "root"; $password_db = ""; //CONECTAR A LA BASE DE DATOS $conexion = mysqli_connect($hostname_db, $username_db, $password_db); //SELECCIONAR LA BASE DE DATOS mysqli_select_db($conexion,$database_conexion) or die ("Ninguna base de datos seleccionada"); //aca los parametros de conexion $nombre="backup.txt"; //Este es el nombre del archivo a generar $drop = false; $tablas = false; //tablas de la bd // Tipo de compresion. // Puede ser "gz", "bz2", o false (sin comprimir) $compresion = false; /* Conexion */ $conexion = mysqli_connect($hostname_db, $username_db, $password_db) or die("No se puede conectar con el servidor MySQL: ".mysqli_error()); mysqli_select_db($conexion,$database_conexion) or die("No se pudo seleccionar la Base de Datos: ". mysqli_error()); /* Se busca las tablas en la base de datos */ if ( empty($tablas) ) { $consulta = "SHOW TABLES FROM $database_conexion;"; $respuesta = mysqli_query($conexion, $consulta) or die("No se pudo ejecutar la consulta: ".mysqli_error()); while ($fila = mysqli_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:i:s"); $info['mysqlver'] = mysqli_get_server_info($conexion); $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 # +=================================================================== # | # | Generado el {$info['fecha']} a las {$info['hora']} # | Servidor: {$_SERVER['HTTP_HOST']} # | MySQL Version: {$info['mysqlver']} # | PHP Version: {$info['phpver']} # | Base de datos: '$database_conexion' # | 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 = mysqli_query($conexion, $consulta) or die("No se pudo ejecutar la consulta: ".mysqli_error()); while ($fila = mysqli_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 = mysqli_query($conexion, $consulta) or die("No se pudo ejecutar la consulta: ".mysqli_error()); while ($fila = mysqli_fetch_array($respuesta, MYSQL_ASSOC)) { $columnas = array_keys($fila); foreach ($columnas as $columna) { if ( gettype($fila[$columna]) == "NULL" ) { $values[] = "NULL"; } else { $values[] = "'".mysqli_real_escape_string($conexion,$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>"; } ?>
1
Puntos
Puntos
Por Dannus hace 90 meses
Avanzado