Código PHP:
<?php
//MaxBakupBd Function Creada el Domingo a las 06:00 am del 09 de Noviembre del 2003
/*INICIO DE LA FUNCION PARA REALIZAR UN BACKUP DE LA BASE DE DATOS Y COMPRIMIRLO EN ZIP*/
function FUNC_MaxBakupBd($fileNameMySqlDump,$sql_host,$sql_usuario,$sql_pass,$sql_db){//funcion para hacer un backup de la base de datos
function FUNC_compressZip($fileNameMySqlDump){//funcion para comprimir la base de datos en zip
$fileOriginal = $fileNameMySqlDump.".sql";
$fileZip = $fileNameMySqlDump.".zip";
$fp = fopen($fileOriginal, "r");//abro el fichero a comprimir
$datosSqlBakup = fread ($fp, filesize($fileOriginal));//leo y compruebo el fichero
fclose($fp);//cierro el fichero a comprimir
$zp = gzopen($fileZip, "w9");// metodo de compresion, nivel 9
gzwrite($zp, $datosSqlBakup);//escribo el fichero zip comprimido
gzclose($zp);//cierro el fichero zip comprimido
}//termino funcion zip
$sysOperative = (stristr(PHP_OS, 'WIN')) ? "Windows" : "Linux";//compruebo el sistema operativo del servidor
if (empty($sysOperative)){ echo "Error 6000: Se produjo error por no encontrar el sistema operativo del servidor."; exit; }
$fileNameMySqlDump = date("Y_d_m_H_m_s")."_".$fileNameMySqlDump;//añado la fecha y la hora al nombre del fichero
$db_connect = mysql_connect($sql_host,$sql_usuario,$sql_pass) or die("MySQL dice: ".mysql_error());//conectamos con la base de datos
mysql_select_db($sql_db) or die("MySQL dice: ".mysql_error());//seleccionamos la base de datos
switch ($sysOperative){//creo el selector de sistema operativo
case 'Windows'://servidores mysql montados en maquinas windows
$mySqlDump = "c:\mysql\bin\mysqldump.exe -u $sql_usuario --password=$sql_pass --opt $sql_db > $fileNameMySqlDump.sql";//ejecuto el backup
system($mySqlDump, $resultMySqlDump);
break;
case 'Linux'://servidores mysql montados en maquinas linux
$mySqlDump = "mysqldump -u $sql_usuario --password=$sql_pass --opt $sql_db > $fileNameMySqlDump.sql";//ejecuto el backup
system($mySqlDump, $resultMySqlDump);
break;
default:
echo "Error 7000: Se produjo error por no ser un sistema compatible con Windows - Unix - Linux.";//si el sistema operativo no existe o no esta definido, error
exit;
break;
if ($resultMySqlDump) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }//compruebo errores
}//termino switch
FUNC_compressZip($fileNameMySqlDump);//ejecuto funcion de compresion zip
}//termino funcion
/*FIN DE LA FUNCION*/
/*············································································*/
/*EJEMPLO DE COMO USAR LA FUNCION*/
$sql_host = "localhost"; // Host, nombre del servidor o IP del servidor Mysql.
$sql_usuario = "xxxx"; // Usuario de Mysql
$sql_pass = "xxxx"; // contraseña de Mysql
$sql_db = "xxxx"; // Base de datos
session_start();//inicio sessiones para que solo se ejecute el code 1 vez.
session_cache_limiter('nocache,private');//regulo la cache, para no dar error
if (empty($_SESSION['backupMySqlBd'])){//si no existe la session, ejecuto el code
$_SESSION['backupMySqlBd']="Realizado";//almaceno un dato cualquiera en la session
FUNC_MaxBakupBd("mysql",$sql_host,$sql_usuario,$sql_pass,$sql_db);
} else { echo "ya esta, no puedes 2 veces, espera 5 minutos";}//error, ya has hecho el backup
/*EJEMPLO DE COMO USAR LA FUNCION*/
?>
pd: Maestros, esta funcion tiene un error, cuando comprime no incluye la extension del fichero, se le olvida que es *.sql, pero bueno, funcionar funciona.