Codigo de PHP para descargar una db en el mismo servidor

  • Autor Autor CarlosManrique
  • Fecha de inicio Fecha de inicio
C

CarlosManrique

Préstamo
Gamma
Verificado por Whatsapp
Hola chicos una pregunta tengo un servidor linux que quisera ver si es posible un codigo php para un ejemplo descargar una db, la db la tengo en phpmyadmin pero por alguna razon esta bug el phpmyadmin
 
Última edición:
Lo que podrias hacer es imprimir un arreglo con todas las tablas y columna de la DB en un archivo .txt luego importarlo a un archivo .sql
 
No ocupas un script php para eso, te regalo el código con el que podrás descargarte la DB:

Bash:
mysqldump -u root -p tu_db > exportado.sql

Reemplaza "root" por tu usuario de base de datos y "tu_db" por el nombre de tu base de datos. De nada 😉

Si es un servidor remoto, agrega la opción -h (donde "my_host" es la IP o el dominio de tu hosting de base de datos)

Bash:
mysqldump -u root -h my_host -p tu_db > exportado.sql
 
No ocupas un script php para eso, te regalo el código con el que podrás descargarte la DB:

Bash:
mysqldump -u root -p tu_db > exportado.sql

Reemplaza "root" por tu usuario de base de datos y "tu_db" por el nombre de tu base de datos. De nada 😉

Si es un servidor remoto, agrega la opción -h (donde "my_host" es la IP o el dominio de tu hosting de base de datos)

Bash:
mysqldump -u root -h my_host -p tu_db > exportado.sql

Eso debo colocarlo en php? podria darme un ejemplo escrito en el codigo php?
 
Eso debo colocarlo en php? podria darme un ejemplo escrito en el codigo php?
No, eso lo colocas en la terminal (linea de comandos). Puedes hacerlo entrando a tu servidor por SSH.

Si nada de eso te resulta familiar... entonces crea un php con lo siguiente en tu carpeta public_html:

PHP:
<?php
    
exec('mysqldump -u root -p tu_db > exportado.sql’);

$file = 'exportado.sql';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

Nota, tal vez se me pase un error de sintaxis no he probado el código.
 
Lo probare mañana gracias hermano cualquier cosa comentare.
 
No, eso lo colocas en la terminal (linea de comandos). Puedes hacerlo entrando a tu servidor por SSH.

Si nada de eso te resulta familiar... entonces crea un php con lo siguiente en tu carpeta public_html:

PHP:
<?php
    
exec('mysqldump -u root -p tu_db > exportado.sql’);

$file = 'exportado.sql';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

Nota, tal vez se me pase un error de sintaxis no he probado el código.
Que aumente el límite de tiempo de ejecución si la base de datos es muy pesada.
 
Puedes usar BugDump: https://www.ozerov.de/bigdump.zip (se supone que sirve para exportar incluso bases de datos muy pesadas)

Aquí tienes un vídeo cortito que explica como usarlo:

kj
 
Teniendo root access y acceso FTP me parece mas ideal arreglar el phpMyAdmin.


Por alguna extraña razon cuando le doy a exportar la base de datos en phpmyadmin cualquer tabla se queda cargando si piso o hago click en otro lado carga muy rapido y el servidor no esta colapsado y la base de datos no pesa ni 20 mb xD
 
Seguramente es un cPanel o WHM, en cualquier caso seguro será un servicio manejado por lo que puedes reportar eso para que lo arreglen en caso de que tu no sepas como hacerlo.


Saludos!
 
Prueba este script:


PHP:
<?php
//Ingresa los datos de tu servidor abajo asi como el nombre del archivo sql
$NombreDeLaDB ='XXXXX';
$UsuarioDeLaDB ='XXXXX';
$ContrasenaDeLaDB ='XXXXX';
//Si es que el host de pagina web o DB no es localhost cambialo abajo
$HostDeLaDB ='localhost';
//Directorio en el servidor donde se guardara el respaldo de la DB asi como nombre del archivo sql
$DirDeRespaldo ='directorio/archivo.sql';


//NO CAMBIAR NADA ABAJO
$comando='mysqldump --opt -h' .$HostDeLaDB .' -u' .$UsuarioDeLaDB .' -p' .$ContrasenaDeLaDB .' ' .$NombreDeLaDB .' > ' .$DirDeRespaldo;
//exec($comando,$output=array(),$funciono);
$output = array();
exec($comando,$output,$funciono);
switch($funciono){
case 0:
echo 'La DB <b>' .$NombreDeLaDB .'</b> se guardo con exito en la siguiente ruta '.getcwd().'/' .$DirDeRespaldo .'</b>';
break;
case 1:
echo 'Ocurrio un error al exportar <b>' .$NombreDeLaDB .'</b> '.getcwd().'/' .$DirDeRespaldo .'</b>';
break;
case 2:
echo 'Ocurrio un error de exportacion, por favor verifique la siguiente info: <br/><br/><table><tr><td>Nombre de La DB:</td><td><b>' .$NombreDeLaDB .'</b></td></tr><tr><td>Usuario de MySQL:</td><td><b>' .$UsuarioDeLaDB .'</b></td></tr><tr><td>Contrasena de MySQL:</td><td><b>NOSEMUESTRA</b></td></tr><tr><td>Host de MySQL:</td><td><b>' .$HostDeLaDB .'</b></td></tr></table>';
break;
}
?>
 
Si esta en Windows yo creo un .bat para que al dar clic me cree una copia de seguridad de la base de datos con fecha y hora el contenido del .bat es el siguiente:

echo off C:\xampp\mysql\bin\mysqldump -hlocalhost -uroot contars > copia_seguridad_%Date:~6,4%%Date:~3,2%%Date:~0,2%_.sql exit


Primero le paso la ruta del mysqldump luego el servidor, usuario y lo el resultado se envía a un archivo .sql

Lo guarde como backup.bat

A esto le creo un accedo directo en el escritorio y con un solo clic crear una copia de seguridad de tu base de datos.

Adjunto en .txt como debe quedar el archivo
 

Adjuntos

Buenas algunos ejemplos probe ninguno me la hace descargar completa no entiendo por que.
 
Atrás
Arriba