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

Mucho se ha preguntado como hacer un respaldo de bases de datos y luego restaurar la misma...ahora les doy una pequeña opcion para hacerlo espero que les sirva y que mi aporte sea de gran ayuda.

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());
}
?>
segundo creamos el archivo de respaldo al que llamaremos backup.php
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");
    
}

?>
ahora simplemente creamos el index.php
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...