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