primero creamos el archivo de conexion al q llamaremos conexion.php
Código PHP:
<?php
error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
$servername='';//localhost
$dbusername='';//root
$dbpassword='';//tupass
$dbname='';//tuclave
connecttodb($servername,$dbname,$dbusername,$dbpassword);
function connecttodb($servername,$dbname,$dbusername,$dbpassword)
{
$link=mysql_connect ($servername,$dbusername,$dbpassword);
if(!$link)
{
die('No puedo Conectarme al Administrador MySQL'.mysql_error());
}
mysql_select_db($dbname,$link)
or die ('No puedo seleccionar la base de datos'.mysql_error());
}
?> Código PHP:
<?php
include("conexion.php");
$fechaDeLaCopia = "-".date("d-l-F-Y");
$ficheroDeLaCopia =$dbname.$fechaDeLaCopia.".sql";
$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";
}
$executa="$DirBase --host=$servername --user=$dbusername --password=$dbpassword -R -c --add-drop-table $dbname > $ficheroDeLaCopia";
system($executa);
header( "Content-Disposition: attachment; filename=".$ficheroDeLaCopia."");
header("Content-type: application/force-download");
@readfile($ficheroDeLaCopia);
unlink($ficheroDeLaCopia);
?> tercero creamos el archivo para restaurar el backup.sql al que llamaremos restore.php
Código PHP:
<?php
include ("conexion.php");
echo'<title>Restore & backup para windows y linux</title>';
if (!isset ($_FILES["ficheroDeCopia"]))
{
$contenidoDeFormulario="<form action='restoreback.php' method='post' enctype='multipart/form-data' name='formularioDeRestauracion'";
$contenidoDeFormulario.="id='formularioDeRestauracion'>\n";
$contenidoDeFormulario.="<table width='360' border='0' align='center' class='normal' cellspacing='7'>\n";
$contenidoDeFormulario.="<tr>\n";
$contenidoDeFormulario.="<td colspan='4' align=center>Indique el origen del archivo de copia: </td>\n";
$contenidoDeFormulario.="</tr>\n";
$contenidoDeFormulario.="<td colspan='2' align=center><input type='file' name='ficheroDeCopia' id='ficheroDeCopia'";
$contenidoDeFormulario.="size='30'></td>\n";
$contenidoDeFormulario.="<tr>\n";
$contenidoDeFormulario.="<td colspan='3' align='center'><input name='envio' type='submit' ";
$contenidoDeFormulario.="id='envio' value='[ Aceptar ]'></td>\n";
$contenidoDeFormulario.="</tr>\n";
$contenidoDeFormulario.="</tbody>\n";
$contenidoDeFormulario.="</table>\n";
$contenidoDeFormulario.="</form>\n";
echo ($contenidoDeFormulario);
}
else
{
$archivoRecibido=$_FILES["ficheroDeCopia"]["tmp_name"];
$destino="./ficheroParaRestaurar.sql";
if (!move_uploaded_file ($archivoRecibido, $destino))
{
$mensaje='EL proceso ha fallado';
echo $mensaje;
}
$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="bin/mysql";
}
else
{
$DirBase=$DirBase."bin\mysql";
}
$executa = "$DirBase -h $servername -u $dbusername --password=$dbpassword $dbname < $destino";
system($executa,$resultado);
if ($resultado)
{
echo "<H3>Error ejecutando comando: $executa</H3>\n";
$mensaje="ERROR. La copia de seguridad no se ha restaurado.";
$cabecera="COPIA DE SEGURIDAD NO RESTAURADA";
echo $mensaje;
echo "<meta http-equiv='Refresh' content='3;url=index.php'>";
}
else
{
$mensaje2="La copia de seguridad se ha restaurado correctamente.";
$cabecera2="COPIA DE SEGURIDAD RESTAURADA";
echo $mensaje2;
echo "<meta http-equiv='Refresh' content='3;url=index.php'>";
}
unlink ("ficheroParaRestaurar.sql");
}
?> Código PHP:
<?php
include("conexion.php");
echo'<title>Restore & backup para windows y linux</title>';
echo'<ul><li><a href="backup.php">Probar backup de BD</a></li>';
echo'<li><a href="restore.php">Probar restore de BD</a></li></ul>';
?> mmmm.... acabo de recordar algo
este codigo solo ha sido probado de manera local en S.O (windows y linux) y agradeceria enteramente que alguien lo hiciera de forma remota.
y me avisara que pasa... No soy ningun experto en php pero me gusta coolaborar en algo...
pero aca esta el nuevo script.... es valido aclarar que este toma todas las bases de datos y las comprime en un solo archivo 
,espero que lo sepan aprovechar al maximo y que verifiquen aspectos de seguridad 

Este tema le ha gustado a 6 personas