Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/06/2011, 15:13
Avatar de Deathmetalrules
Deathmetalrules
 
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 14 años
Puntos: 8
Información Respuesta: Aporte Sistema de respaldo y restauracion de bases de datos

gracias por haberse interesado, retomando el tema tome como punto de partida otro script del compañero mgusdl el cual genera un backup con compresion .zip lo probe pero tenia cierto inconvenientes pero aca esta el nuevo script.... es valido aclarar que este toma todas las bases de datos y las comprime en un solo archivo

Código PHP:
<?php
#############################################
#
# Tarea de copia seguridad de todas las bases de datos en MySQL
#
# CopyLeft, puedes hacer con este script lo que te de la gana
#
#############################################
set_time_limit(0);
header("Content-type: text/plain; charset=UTF-8");
echo 
date("Y-m-d H:i"time()) . " Creando copia de seguridad MySQL...\r\n";

// Datos de acceso a MySQL
$myhost "localhost";
$myuser 'root';
$mypass '';//tu pass
$DB mysql_connect($myhost$myuser$mypass) or die(date("Y-m-d H:i"time()) . " ERROR!! No se pudo conectar a MySQL.\r\n");

// Otros parámetros
$OUTDIR "./backup/"// Cambiar segun necesidades y tipo servidor
$now date("d-l-F-Y"time());
$outfile "MySQL-$now-.zip";
$periodo time() - 259200// Los archivos anteriores a este periodo (3 dias = 259200 segundos) serán borrados

// Crear nuevo archivo ZIP
# Más información sobre la clase PHP
# http://es.php.net/manual/en/class.ziparchive.php
echo date("Y-m-d H:i"time()) . " Creando '$OUTDIR$outfile' ... ";
$zip = new ZipArchive;
if (!
$zip->open("$OUTDIR$outfile"ZIPARCHIVE::CREATE)) die("ERROR!!\r\n");
echo 
"OK.\r\n";

// Tomar un listado de bases de datos
$q mysql_query("SHOW DATABASES");
// Volcar todas las bases
while ($database mysql_fetch_row($q))
    if (
$database[0] != "information_schema" && $database[0] != "mysql")
        {
        
// Nombrar archivo
        
$filename "{$database[0]}.sql";
        
$tempfile date("YmdHis"time()) . ".~swap";

        echo 
date("Y-m-d H:i"time()) . " Volcando '$filename' ... ";
        
$sistema="show variables where variable_name= 'basedir'";
        
$restore=mysql_query($sistema);
        
$DirBase=mysql_result($restore,0,"value");
        
$primero=substr($DirBase,0,1);
        if (
$primero=="/") {
        
$DirBase="mysqldump";
                } 
        else 
        {
        
$DirBase=$DirBase."bin\mysqldump";
         }
        
// Volcar datos
        
$executa="$DirBase --host=$myhost --user=$myuser --password=$mypass -R -c --add-drop-table {$database[0]}  > $OUTDIR$tempfile";
        
system($executa,$resultado);

        echo 
"OK.\r\n"
        
date("Y-m-d H:i"time()) . " Agregando '$filename' a '$outfile' ... ";

        
//  Agregar archivo al ZIP
        
$zip->addFile($OUTDIR.$tempfile$filename);

        
// Recordar los temporales utilizados
        
$DUMPFILES[] = $OUTDIR.$tempfile;

        echo 
"OK.\r\n";
        }

// Desconectar de la base de datos
mysql_close($DB);

// Cerrar archivo ZIP
$zip->close();

// Eliminar temporales. Importante hacerlo DESPUÉS de cerrar el ZIP
foreach($DUMPFILES as $file)
   
unlink($file);
// Elminar archivos antiguos
echo date("Y-m-d H:i"time()) . " Eliminando copias antiguas...\r\n";
$D opendir($OUTDIR);
while (
$F readdir($D))
    if (
$F != "." && $F != "..")
        if (
filectime($OUTDIR.$F) < $periodo)
            if (!
unlink($OUTDIR.$F))
                echo 
date("Y-m-d H:i"time()) . " No se pudo eliminar el archivo $F.\r\n";        
closedir($D);

echo 
date("Y-m-d H:i"time()) . " Tarea finalizada.\r\n";
?>

quisiera que probaran ambos aportes de forma remota...y si es posible avisarme que sucede....se los agradeceria
__________________
Un nuevo horizonte