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...