Ver Mensaje Individual
  #9 (permalink)  
Antiguo 04/07/2007, 15:31
hharris
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Hacer backup a la base de datos.

Ok Carxl.. A ver,

Dentro de mi sitio tengo una carpeta llamada "backup"; en ella tengo las clases que plantea Deer en su script, que son las siguientes:
  • AbstractMail.php
    AttachmentMail.php
    execute_db_backup.php
    Mail.php
    Multipart.php
    mysql_db_backup.class.php

Posteriormente y fuera de la carpeta backup, tengo una pagína llamada "backup.php" que contiene lo siguiente:

Código PHP:
<?
// Script Respaldo de BD Mysql y enviado via Email
// Utilizando algunas Clases.
// Autor : Deerme http://deerme.org

// ******* Includes *************
require_once 'backup/mysql_db_backup.class.php';
require(
"backup/Mail.php");
require(
"backup/AttachmentMail.php");
require(
"backup/Multipart.php");
// ******************************

// ******* Configuracion ********
$lista_db[0]="bd_sigecor";
$lista_db[1]="db2";
$lista_db[2]="db3";
$lista_db[3]="db4";
$msg['titulo']="Respaldo BD";
$hora_local=time();
$usuario="root";
$password="";
$servidor="localhost";
$msg['destino']="[email protected]";
$msg['autor']="[email protected]";
// ******************************
// Instanciamos Objetos , Variables Iniciadas
$backup_obj = new MySQL_DB_Backup();
$correo = new AttachmentMail($msg['destino'], $msg['titulo'], ""$msg['autor']);
$pesototal=0;


// Comenzamos la Creacion de los Archivos
for ($i=0;$i<count($lista_db);$i++)
{
    
// Confg del Objeto
    
$backup_obj->server $servidor;
    
$backup_obj->port 3306;
    
$backup_obj->username $usuario;
    
$backup_obj->password $password;
    
$backup_obj->database $lista_db[$i];
    
    
// Opciones del Objeto
    
$backup_obj->drop_tables true;
    
$backup_obj->create_tables true;
    
$backup_obj->struct_only false;
    
$backup_obj->locks true;
    
$backup_obj->comments true;
    
$backup_obj->backup_dir './';
    
$backup_obj->fname_format 'm_d_Y';
    
$backup_obj->null_values = array( '0000-00-00''00:00:00''0000-00-00 00:00:00');
    
$task MSX_SAVE;
    
$filename $lista_db[$i].'.sql.gz';
    
$use_gzip true;
    
$result_bk $backup_obj->Execute($task$filename$use_gzip);
    if (!
$result_bk)
    {
        
$output $output.$backup_obj->error;
    }
    else
    {
        
$output $output.'
Resp DB : '
.$lista_db[$i].'
Nombre : '
.$lista_db[$i].'.sql.gz
Tamaño : '
.filesize($lista_db[$i].'.sql.gz').' bytes
--------------------------------'
;
        
$peso=filesize($lista_db[$i].'.sql.gz');
        
$pesototal=($pesototal+$peso);
    }
    
}

// Listo tenemos Creados los Archivos
// Hacemos Bucle para Adjuntarlos al Email

for ($i=0;$i<count($lista_db);$i++)
{    
     if ( 
file_exists($lista_db[$i].'.sql.gz') )
     {
        
$correo->addAttachment( new Multipart($lista_db[$i].'.sql.gz') );    
    }
    
}
$correo->addTo($addTo);
// *** Mensaje ***
$msg['msg'] = 'Sistema Automatizado de Respaldo de Db

'
.$output.'

Tamaño Total Adjunto : '
.$pesototal.' bytes
Hora y Fecha : '
.date(" H:i d/m/Y ",$hora_local).'
'
;
// *** Fin Mensaje ***
// Adjuntamos Mensaje al Correo
$correo->setBodyHtml($msg['msg']);
$correo->setPriority(ABSTRACTMAIL_NORMAL_PRIORITY);
// Enviamos
if ( $correo->send() )
{
    echo 
'Respaldo y Envio de Correo Exitoso<br>Mensaje :<br><pre>'.$msg["msg"].'</pre>';
}
else
{
    echo 
'Surgerion Problemas al Enviar el Correo';    
}



?>
Que tiene lo mismo que el ejemplo de Deer en la página "index.php" salvo que personalizo la parte de congifuración:

Código PHP:
// ******* Configuracion ********
$lista_db[0]="bd_sigecor";
$lista_db[1]="";
$lista_db[2]="";
$lista_db[3]="";
$msg['titulo']="Respaldo BD";
$hora_local=time();
$usuario="root";
$password="";
$servidor="localhost";
$msg['destino']="[email protected]";
$msg['autor']="[email protected]"
Eso es lo que hago.
Dentro de ese sitio corro otras cosas que tengo en PHP y se comportan bien.

Deer hacia un comentario sobre "permisos 666 ó 777 en el directorio". eso no lo entiendo muy bien. Él dice que el directorio debe tener permisos para escribir (666 o 777). (AUNQUE NO CREO QUE ESE SEA MI PROBLEMA EN ESTE INSTANTE, PORQUE CUANDO EJECUTO EL SCRIPT ME APARECE TODO EL PHP). Como se si tengo el directorio habilitado con esos permisos?

Y bueno mi servidor local es el EasyPHP como lo comente antes, no se si sea cuestión que falte alguna extensión por habilitar.

Bueno gracias, espero haberme explicado y que puedan asesorarme.