// //Requisitos: //- Servidor con soporte PHP. Recomendado versión 4.3 o superior //- Tener acceso a la función mysqldump. //- El directorio donde se guarde debe tener los permisos adecuados. //- Tener activa la función mail. //- Tener activa la extensió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ón en http://www.php.net, de nada sirve un lenguaje de programación sino esta bien documentado. //- A http://www.google.es por que todo esta allí. // //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ás es GPL (¿no?) //- Y estarí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ñ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ón 1.0.1 // - arreglado pequeño bug, http://php-hispano.net/archivos/Scripts/205/1, por Danny. // //Script creado por: www.NoSetup.org //*/ // //// CONFIGURACIÓN. //$dbhost = 'localhost'; // Servidor base de datos. //$dbuname = 'root'; // Usuario base de datos. //$dbpass = '.,selfor'; // Contraseñ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í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ó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ó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 //} ?>