Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/07/2009, 06:15
Mirador
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Backup de base de datos mysql desde formulario en php

Código PHP:
<?php
function free_result($query_id=-1) {
    if( 
$query_id!=-1) {
      
$query_id=$query_id;
    }
    return @
mysql_free_result($query_id);
  }
  function 
query_first($query_string) {
    
$res query($query_string);
    
$returnarray fetch_array($res);
    
free_result($res);
    return 
$returnarray;
  }
    function 
query($query_string) {
    
$query_id mysql_query($query_string);
    if( !
$query_id) {
      
problemas("Invalid SQL: ".$query_string);
    }
    return 
$query_id;
  }
//-------
//  Main
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
 <HEAD>
    <title>Dump y Download la Base de Datos</title>
    <!-- no cache headers -->
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="no-cache">
    <meta http-equiv="Expires" content="-1">
    <meta http-equiv="Cache-Control" content="no-store">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Cache-Control" content="must-revalidate">
    <!-- end no cache headers --> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 </HEAD>
<BODY 
    bgcolor="#D5D5D5" 
    text="#000000" 
    id="all" 
    leftmargin="25" 
    topmargin="25" 
    marginwidth="25" 
    marginheight="25" 
    link="#000020" 
    vlink="#000020" 
    alink="#000020">
<center><h1>Dump y Download la Base de Datos</h1></center>
<br>
<strong>
<?php
    
@set_time_limit);    
    echo( 
"- Base de Datos: '$db_name' en '$db_server'.<br>" );
    
$error false;
    
$tablas 0;
    
$total_tablas 0;
    
$total_rows 0;
    if( !@
function_exists'gzopen' ) ) {
        
$hay_Zlib false;
        echo( 
"- Ya que no está disponible Zlib, salvaré la Base de Datos sin comprimir, como '$filename'<br>" );
    }
    else {
        
$filename $filename ".gz";
        
$hay_Zlib true;
        echo( 
"- Ya que está disponible Zlib, salvaré la Base de Datos comprimida, como '$filename'<br>" );
    }    
    if( !
$error ) { 
        
$dbconnection = @mysql_connect$db_server$db_username$db_password ); 
        if( 
$dbconnection
            
$db mysql_select_db$db_name );
        if( !
$dbconnection || !$db ) { 
            echo( 
"<br>" );
            echo( 
"- La conexion con la Base de datos ha fallado: ".mysql_error()."<br>" );
            
$error true;
        }
        else {
            echo( 
"<br>" );
            echo( 
"- He establecido conexion con la Base de datos.<br>" );
        }
    }
    if( !
$error ) { 
        
//  MySQL versión
        
$result mysql_query'SELECT VERSION() AS version' );
        if( 
$result != FALSE && @mysql_num_rows($result) > ) {
            
$row   mysql_fetch_array($result);
        } else {
            
$result = @mysql_query'SHOW VARIABLES LIKE \'version\'' );
            if( 
$result != FALSE && @mysql_num_rows($result) > ){
                
$row   mysql_fetch_row$result );
            }
        }
        if(! isset(
$row) ) {
            
$row['version'] = '3.21.0';
        }
    }
    if( !
$error ) { 
        
$el_path getenv("REQUEST_URI");
        
$el_path substr($el_pathstrpos($el_path"/"), strrpos($el_path"/"));
        
$result mysql_list_tables$db_name );
        if( !
$result ) {
            print 
"- Error, no puedo obtener la lista de las tablas.<br>";
            print 
'- MySQL Error: ' mysql_error(). '<br><br>';
            
$error true;
        }
        else {
            
$t_start time();
            
            if( !
$hay_Zlib 
                
$filehandle fopen$filename'w' );
            else
                
$filehandle gzopen$filename'w6' );    //  nivel de compresión                
            
if( !$filehandle ) {
                
$el_path getenv("REQUEST_URI");
                
$el_path substr($el_pathstrpos($el_path"/"), strrpos($el_path"/"));
                echo( 
"<br>" );
                echo( 
"- No he podido crear '$filename' en '$el_path/'. Por favor, asegúrese de<br>" );
                echo( 
"&nbsp;&nbsp;que dispone de privilegios de escritura.<br>" );
            }
            else {                    
                
$tabledump "-- Dump de la Base de Datos\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                
setlocaleLC_TIME,"spanish" );
                
$tabledump "-- Fecha: " strftime"%A %d %B %Y - %H:%M:%S"time() ) . "\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                
$tabledump "--\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                
$tabledump "-- Version: " Str_VERS ", del " Str_DATE ", [email protected]\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                
$tabledump "-- Soporte y Updaters: http://insidephp.sytes.net\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                
$tabledump "--\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                
$tabledump "-- Host: `$db_server`    Database: `$db_name`\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                
$tabledump "-- ------------------------------------------------------\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                
$tabledump "-- Server version    "$row['version'] . "\n\n";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    

                echo(
"<br>");
                
$result query'SHOW tables' );
                while( 
$currow fetch_array($resultDBARRAY_NUM) ) {
                    
$total_tablas++;
                    
$st number_format($total_tablas0',''.');
                    echo(
"&nbsp;&nbsp;&nbsp;Tablas - Rows procesados: $st - ");
                    
$total_rows += fetch_table_dump_sql$currow[0], $filehandle );
                    
$sc number_format($total_rows0',''.');
                    echo(
"$sc<br>");
                    
fwrite$filehandle"\n" );
                    if( !
$hay_Zlib 
                        
fwrite$filehandle"\n" );
                    else
                        
gzwrite$filehandle"\n" );
                        
$tablas++;
                }
                echo(
"<br>");
                
$tabledump "\n-- Dump de la Base de Datos Completo.";
                if( !
$hay_Zlib 
                    
fwrite$filehandle$tabledump );
                else
                    
gzwrite$filehandle$tabledump );    
                if( !
$hay_Zlib 
                    
fclose$filehandle );
                else
                    
gzclose$filehandle );
    
                
$t_now time();
                
$t_delta $t_now $t_start;
                if( !
$t_delta )
                    
$t_delta 1;
                
$t_delta floor(($t_delta-(floor($t_delta/3600)*3600))/60)." minutos y "
                
.floor($t_delta-(floor($t_delta/60))*60)." segundos.";
                echo( 
"- He salvado las $tablas tablas en $t_delta<br>" );
                echo( 
"<br>" );
                echo( 
"- El Dump de la Base de Datos está completo.<br>" );
                echo( 
"- He salvado la Base de Datos en: $el_path/$filename<br>" );
                echo( 
"<br>" );
                echo( 
"- Puede bajársela directamente: </strong><a href=\"$filename\">$filename</a>" );
                
$size filesize($filename);
                
$size number_format($size0',''.');
                echo( 
"&nbsp;&nbsp;&nbsp;<small>($size bytes)</small><br>" );
            }
        }
    }
    if( 
$dbconnection )
        
mysql_close();

    echo( 
"</strong><br><br><hr><center><small>" );
    
setlocaleLC_TIME,"spanish" );
    echo 
strftime"%A %d %B %Y&nbsp;-&nbsp;%H:%M:%S"time() );    
    echo( 
"</small></center>" );
    echo( 
"</BODY>" );
    echo( 
"</HTML>" );
?>
Espero que te sea de ayuda, a mi me funciona perfecto junto con cronjob para hacer un backup diario. Luego tengo un programilla en .net que me copia el archivo mas reciente del servidor a mi pc y asi me olvido de posibles problemas.

saludos!