173 lines
6.9 KiB
PHP
173 lines
6.9 KiB
PHP
|
|
<?php
|
|||
|
|
///*
|
|||
|
|
//Prop<6F>sito:
|
|||
|
|
//- Este script sirve para descargar la base de datos, comprimida al m<>ximo en gzip.
|
|||
|
|
//- As<41> mismo se envia por mail al administrador, para mayor comodidad y seguridad.
|
|||
|
|
//- El nombre del archivo enviado indica la fecha del backup.
|
|||
|
|
//- Se puede poner en conjuncci<63>n con otro script, pues el usuario que ejecute este script solo notara un retardo, pero no tendra acceso a la base de datos. Ni saldra ningun aviso indicando que ha sido ejecutado o que ha fallado.
|
|||
|
|
//
|
|||
|
|
//Configuraci<63>n:
|
|||
|
|
//- Toda la configuraci<63>n esta indicado al inicio del mismo, "// CONFIGURACI<43>N"
|
|||
|
|
//- Salvar con el nombre deseado con extensi<73>n .php
|
|||
|
|
//
|
|||
|
|
//Forma de uso sin salida:
|
|||
|
|
//- Incluirlo en el fichero con un: include('mysql.php');
|
|||
|
|
//- Llamar a la funci<63>n con: backup_mysql();
|
|||
|
|
//
|
|||
|
|
//Forma de uso confirmado su ejecuci<63>n:
|
|||
|
|
//<?php
|
|||
|
|
//include('mysql.php');
|
|||
|
|
//$backup=backup_mysql();
|
|||
|
|
//if($backup=='TRUE')
|
|||
|
|
// echo 'Backup realizado corectamente';
|
|||
|
|
//else
|
|||
|
|
// echo 'Backup fallido';
|
|||
|
|
//?>
|
|||
|
|
//
|
|||
|
|
//Requisitos:
|
|||
|
|
//- Servidor con soporte PHP. Recomendado versi<73>n 4.3 o superior
|
|||
|
|
//- Tener acceso a la funci<63>n mysqldump.
|
|||
|
|
//- El directorio donde se guarde debe tener los permisos adecuados.
|
|||
|
|
//- Tener activa la funci<63>n mail.
|
|||
|
|
//- Tener activa la extensi<73>n Zlib [http://www.zlib.net/]. {recomendado}
|
|||
|
|
//- Ser humano o compatible.
|
|||
|
|
//
|
|||
|
|
//Agradecimientos:
|
|||
|
|
//- A HarryLine de http://www.kualda.com por dejarme un cacho de espacio web.
|
|||
|
|
//- A Ximvad por "saber ayudar" no hace falta que te digan como hacer las cosas paso a paso, sino simples indicaciones, como tu lo has hecho.
|
|||
|
|
//- A los que hacen la documentaci<63>n en http://www.php.net, de nada sirve un lenguaje de programaci<63>n sino esta bien documentado.
|
|||
|
|
//- A http://www.google.es por que todo esta all<6C>.
|
|||
|
|
//
|
|||
|
|
//Licencia:
|
|||
|
|
//- Moralmente esta obligado a mantenerme como autor del script y a comunicarme cualquier sugerencia para mejorarlo o fallos que pudiera haber (y seguro que hay) .
|
|||
|
|
//- Adem<65>s es GPL (<28>no?)
|
|||
|
|
//- Y estar<61>a bien que me dijeran que les parece y donde lo usa.
|
|||
|
|
//
|
|||
|
|
//Control de cambios:
|
|||
|
|
//+ Version 1.0.6
|
|||
|
|
//- salida opcional indicando si es correcto o no el backup
|
|||
|
|
//
|
|||
|
|
//+ Version 1.0.5
|
|||
|
|
//- peque<75>o error con los identificadores de archivo
|
|||
|
|
//
|
|||
|
|
//+ Version 1.0.4
|
|||
|
|
//- envio comprimido opcional.
|
|||
|
|
//
|
|||
|
|
//+ Version 1.0.3
|
|||
|
|
//- modificado ruta para guardar el archivo.
|
|||
|
|
//
|
|||
|
|
//+ Version 1.0.2
|
|||
|
|
// - modificado forma de comprimir en gzip.
|
|||
|
|
//
|
|||
|
|
//+ Versi<73>n 1.0.1
|
|||
|
|
// - arreglado peque<75>o bug, http://php-hispano.net/archivos/Scripts/205/1, por Danny.
|
|||
|
|
//
|
|||
|
|
//Script creado por: www.NoSetup.org <admin@NoSetup.org>
|
|||
|
|
//*/
|
|||
|
|
//
|
|||
|
|
//// CONFIGURACI<43>N.
|
|||
|
|
//$dbhost = 'localhost'; // Servidor base de datos.
|
|||
|
|
//$dbuname = 'root'; // Usuario base de datos.
|
|||
|
|
//$dbpass = '.,selfor'; // Contrase<73>a base de datos.
|
|||
|
|
//$dbname = 'selfor'; // Nombre base de datos.
|
|||
|
|
//$mail_enviar= constante("email_backup"); // Mail a enviar la base de datos.
|
|||
|
|
//$ruta='backup/'; // Ruta del directorio donde se guardar archivo temporal. [./ para el ra<72>z]
|
|||
|
|
//
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//// NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR, NO TOCAR
|
|||
|
|
//
|
|||
|
|
///* Descargar la base de datos en gzip (al m<>ximo) y enviar por mail.*/
|
|||
|
|
//function backup_mysql($backup)
|
|||
|
|
//{
|
|||
|
|
// // Variables globales
|
|||
|
|
// global $dbhost,$dbuname,$dbpass,$dbname,$mail_enviar,$ruta;
|
|||
|
|
//
|
|||
|
|
// // Crear nombres de los ficheros backup
|
|||
|
|
// $fecha=time(); // Fecha actual
|
|||
|
|
// $archivo=gmstrftime("%y-%m-%d",$fecha); // Formato de la fecha para dar nombre al fichero
|
|||
|
|
// $asunto = 'Base de datos '.$archivo;
|
|||
|
|
// $ruta=$ruta.$archivo.'.sql'; // Archivo sql
|
|||
|
|
// $archivo_gz=$ruta.$archivo.'.gz';
|
|||
|
|
// $fp = fopen($ruta, "a");
|
|||
|
|
// $write = fputs($fp, $backup);
|
|||
|
|
// fclose($fp);
|
|||
|
|
// $tamano_archivo = $fp['size'];
|
|||
|
|
// // Archivo sql.gz
|
|||
|
|
//
|
|||
|
|
// // Descarga de la base de datos
|
|||
|
|
// if(file_exists($ruta)) // Si ha creado correctamente el backup
|
|||
|
|
// {
|
|||
|
|
// $comprimido=comprimir($ruta,$archivo_gz); // Comprimirlo en gzip
|
|||
|
|
// if($comprimido=='TRUE')
|
|||
|
|
// enviar_adjunto ($archivo_gz, $asunto); // Envio de mail comprimido
|
|||
|
|
// else
|
|||
|
|
// enviar_adjunto ($fp, $asunto); // Envio de mail sin comprimir
|
|||
|
|
//
|
|||
|
|
// @unlink($ruta); // Borrar fichero sql
|
|||
|
|
// @unlink($archivo_gz); // Borrar fichero sql.gz
|
|||
|
|
//
|
|||
|
|
// return TRUE; // Regresa confirmado el backup
|
|||
|
|
// }
|
|||
|
|
// else // No ha podido crear el backup
|
|||
|
|
// return FALSE; // Regresa denegando el backup
|
|||
|
|
//}
|
|||
|
|
//
|
|||
|
|
//// Comprimir en gzip un archivo
|
|||
|
|
//function comprimir($archivo_original,$archivo_comprimido)
|
|||
|
|
//{
|
|||
|
|
// $fp=@gzopen($archivo_comprimido,'w9'); // Crear archivo comprimido
|
|||
|
|
// if($fp!='FALSE') // Comprobar que zLib esta activo
|
|||
|
|
// {
|
|||
|
|
// $fp2=@fopen($archivo_original,'r'); // Abrir archivo original
|
|||
|
|
// $buffer=@fread($fp2,filesize($archivo_original));// Leer archivo original
|
|||
|
|
// @fclose($fp2); // Cerrar archivo original
|
|||
|
|
// @gzwrite($fp,$buffer); // Escribir archivo comprimido
|
|||
|
|
// @gzclose($fp); // Cerrar archivo comprimido
|
|||
|
|
// return TRUE; // Regresa confirmado la compresi<73>n
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// return FALSE; // Regresa sin comprimirlo
|
|||
|
|
//}
|
|||
|
|
//
|
|||
|
|
//// ENVIO DE CORREO CON ADJUNTO COMPRIMIDO
|
|||
|
|
//// Adaptado de http://www.tecnocodigo.com/dipro/php/ver.php?categoria=email&articulo=0
|
|||
|
|
//function enviar_adjunto($archivo,$asunto)
|
|||
|
|
//{
|
|||
|
|
// global $mail_enviar;
|
|||
|
|
//
|
|||
|
|
// $buffer = implode("", file($archivo)); // Leer fichero
|
|||
|
|
// $buffer=chunk_split(base64_encode($buffer)); // Codificaci<63>n en base64 y divido
|
|||
|
|
//
|
|||
|
|
// // Cabeceras
|
|||
|
|
// $cabecera = "MIME-version: 1.0\n";
|
|||
|
|
// $cabecera .= "Content-type: multipart/mixed; ";
|
|||
|
|
// $cabecera .= "boundary=\"Message-Boundary\"\n";
|
|||
|
|
// $cabecera .= "Content-transfer-encoding: 7BIT\n";
|
|||
|
|
// $cabecera .= "X-attachments: $archivo";
|
|||
|
|
//
|
|||
|
|
// // Mensaje
|
|||
|
|
// $mensaje = "--Message-Boundary\n";
|
|||
|
|
// $mensaje .= "Content-type: text/plain; charset=ISO-8859-1\n";
|
|||
|
|
// $mensaje .= "Content-transfer-encoding: 7BIT\n";
|
|||
|
|
// $mensaje .= "Content-description: Mail message body\n\n";
|
|||
|
|
//
|
|||
|
|
// // Adjuntar el fichero
|
|||
|
|
// $mensaje .= "\n\n--Message-Boundary\n";
|
|||
|
|
// $mensaje .= "Content-type: Binary; name=\"$archivo\"\n";
|
|||
|
|
// $mensaje .= "Content-Transfer-Encoding: BASE64\n";
|
|||
|
|
// $mensaje .= "Content-disposition: attachment; filename=\"$archivo\"\n\n";
|
|||
|
|
// $mensaje .= "$buffer\n";
|
|||
|
|
// $mensaje .= "--Message-Boundary--\n";
|
|||
|
|
//
|
|||
|
|
// @mail($mail_enviar,$asunto,$mensaje,$cabecera); // Envio de mail
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
?>
|