Incam_Intranet/functions_backup.php

173 lines
6.9 KiB
PHP
Raw Permalink Normal View History

<?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
//}
?>