Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/05/2012, 16:48
Avatar de SirDuque
SirDuque
 
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problema para realizar un script php teniendo el backup sql

De Concordia, barrio Terminal xD!
Aca te dejo la solucion, vos lo usaras a tu criterio, espero que te sirva.
Las variables las pasaras por post o get como quieras.
Ahora para que pruebes solo por get pasas una accion, si no pones ningun get realiza el backup ( espero que se entienda ).

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * SCRIPT: Back-UP MySql.
  4.  * Por SirDuque de Foros del Web
  5.  * Version : 1.0.1
  6.  * SO: Windows.
  7.  * */
  8.  $bat = "C:/script.bat";  //Donde guardamos el BAT?
  9.  $ejecutables = "C:/"; //Donde esta ubicado el ejecutable dumpmysql.exe y mysql.exe
  10.  $accion = isset($_GET['accion'])?"restaura":"backup"; // Alternativas restaura|backup
  11.  $host = 'localhost'; // host
  12.  $user = 'root'; // usuario
  13.  $pass = ''; // contraseña
  14.  $db = "db1"; // base de datos a realizar el back-up
  15.  $destinoBU = "C:/backUp"; // BU = Back-Up // Destino donde se guardara el archivo.
  16.  $nombreBU = !isset($_GET['archivo'])?"backUp-".date("d-m_H-i").".sql":$_GET['archivo']; // Nombre del archivo
  17.  $password =($pass != '')?" -p".$pass." $db":$db; // modifica la funcion si el usuario lleva password en blanco.
  18.  $Comando = "$bat $ejecutables $accion $host $user $password $destinoBU/$nombreBU ";
  19.  if(!is_dir($destinoBU) && @!mkdir($destinoBU)){
  20. die("<samp><b>FATAL error:</b> no se puede acceder al destino.<br> Verificar permisos de escritura</samp>");
  21.  }
  22.  $resultado = exec($Comando);
  23.  
  24.  if(!$resultado){
  25.    echo "<samp>Se produjo un error al realizar el Back-Up: ".$nombreBU."</samp><br>\r\n";
  26.     die($Comando);
  27.  }else{
  28.      echo "<h1>Exito! estamos salvaguardados!</h1>Archivo $nombreBU\r\n";
  29.  }
  30.  ?>

Aca tenes el .BAT
Código C++:
Ver original
  1. @echo off
  2. cd "%1"
  3. IF "%~2"=="backup" mysqldump.exe -h%3 -u%4 %5 > %6
  4. IF "%~2"=="restaura" mysql.exe -h%3 -u%4 %5 < %6
  5. pause

Si llamas el archivo de esta manera:

http://localhost/archivo.php

Realizas el backup

si lo llamas de esta menera

http://localhost/archivo.php?archivo=NombreArchivo.sql

Restauras la base de datos.

Lo provee en Windows 7.

Yo uso wamp
mysql.exe y mysqldump.exe estan en c:/wamp/bin/mysql/mysql5.5.20/bin/

Pero los copie y los pege en C:/ y funcionan de 10 xD!.

Espero que te sirva XD! saludos!
__________________
Mono programando!
twitter.com/eguimariano