Pues mira yo utilizo esta funcion para comprimir
Código PHP:
function iComprimir($sFichOrigen, $iNivelComp = 8)
{
$sFichDetino = $sFichOrigen.".gz";
if ( ! $fOrigen = @fopen($sFichOrigen, "rb"))
return false;
$sOriBin = fread($fOrigen, filesize($sFichOrigen));
fclose($fOrigen);
$sDesGZ = gzencode($sOriBin, $iNivelComp);
if ( ! $fDestino = @fopen ($sFichDetino, "wb"))
return false;
fwrite($fDestino, $sDesGZ);
fclose($fDestino);
return true;
}
y para hacer el respaldo lo hago con este codigo
Código PHP:
$serv=""; //nombre del servidor
$bd=""; //nombre de la base de datos
$usr=""; //usuario para conectarse a la base de datos
$pwd=""; //password del usuario
//hay que poner la ruta exacta en la que se encuentra el archivo mysqldump
//en mi caso es asi, primero va entre comillas simples y después se ponen comillas dobles.
$mysqldump='"C:\AppServ\MySQL\bin\mysqldump.exe"';
//el nombre del backup llevara la fecha y hora del servidor:
$nombre_back=$_POST['filename'];
passthru("$mysqldump $bd -h $serv -u $usr -p$pwd > $nombre_back.sql");
if(iComprimir($nombre_back . ".sql",0))
{
//echo "<a href='$nombre_back.sql.gz'><img src='gz.png' border='0' alt='Descargar Respaldo' title='Descargar Respaldo' /></a>";
?>
<div id="OK">
<b>Nombre del Archivo: <label><?=$nombre_back; ?></label>
<br />
<b>Tamaño: <label><? $tam = size($nombre_back . ".sql.gz"); echo $tam; ?></label>
<br />
<a href="<?=$nombre_back . ".sql.gz" ?>"><img src='gz.png' border="0" align="Decargar Respaldo" title="Descargar Respaldo" /></a>
</div>
<?
}