Location: PHPKode > scripts > Web Server Backup > backup/es/cls_backup.php
<?php
include_once ("cls_fecha_hora.php");
include_once ("CreateZipFile.php");
include_once ("mysql_dump.inc.php");

/*********************************************/
/* Clase backup                              */
/* ----------------------------------------- */
/* Descripción: realiza copias de seguridad  */
/* de la estructura de ficheros y de la BD.  */
/* Autor: Eduardo Martos Gómez.              */
/* Correo-e: hide@address.com */
/* Condiciones de uso: citar al autor.       */
/* Fecha: 05/11/2006.                        */
/* Comentarios: esta clase requiere las      */
/* clases Create ZIP File y mysql_dump,      */
/* disponibles en phpclasses.org y que se    */
/* incluyen en este paquete.                 */
/*********************************************/
class backup
{
	/*************/
	/* Variables */
	/*************/
	var $etiqueta;				// Primera parte del nombre del fichero generado
	var $dir_origen;			// Directorio que se va a copiar (añade una barra al final)
	var $dir_destino;			// Directorio donde se almacenan los ficheros de backup
	var $fich_destino;		// Nombre del fichero que se va a generar
	var $bd_host;					// Host de la BD MySQL
	var $bd_usr;					// Usuario de la BD
	var $bd_clave;				// Clave de la BD
	var $bd_nombre;				// Nombre de la BD que se quiere salvar
	var $error;						// Contiene el último error producido

	/****************************************/
	/* Funciones de asignación de atributos */
	/****************************************/
	function set_etiqueta ($valor)
	{
		$this->etiqueta = $valor;
	}
	function set_dir_origen ($valor)
	{
		$this->dir_origen = $valor;
	}
	function set_dir_destino ($valor)
	{
		$this->dir_destino = $valor;
	}
	function set_bd_host ($valor)
	{
		$this->bd_host = $valor;
	}
	function set_bd_usr ($valor)
	{
		$this->bd_usr = $valor;
	}
	function set_bd_clave ($valor)
	{
		$this->bd_clave = $valor;
	}
	function set_bd_nombre ($valor)
	{
		$this->bd_nombre = $valor;
	}

	/****************************************/
	/* Funciones de devolución de atributos */
	/****************************************/
	function get_error ()
	{
		return $this->error;
	}
	
	/*********************************/
	/* Función inicializar ()        */
	/* ----------------------------- */
	/* Inicializa algunas variables. */
	/*********************************/
	function inicializar ()
	{
		$this->error = "";
		$f_h = new fecha_hora;
		$this->fich_destino = $this->dir_destino."/".$this->etiqueta."_".$f_h->hora_bd ().
			"_".$f_h->fecha_bd ();
	}

	/**********************************************************/
	/* Función backup_files ()                                */
	/* ------------------------------------------------------ */
	/* Comprime el directorio especificado, genera un fichero */
	/* y fuerza su descarga.                                  */
	/**********************************************************/
	function backup_files ()
	{
		$this->inicializar ();
		$fich_destino = $this->fich_destino.".zip";

		$zip = new createZip;  
		$this->make_archive ($this->dir_origen, $zip);
		if (!$zip->save_file ($zip->getZippedfile (), $fich_destino))
		{
			$this->error = "<p>Error al guardar el fichero $fich_destino</p>";
			$res = false;
		}
		else
		{
			$zip->forceDownload ($fich_destino);
			// Elimina el fichero (no funciona sin los permisos de escritura)
			chmod ($fich_destino, 0777);
			@unlink ($fich_destino);
			$res = true;
		}
		return $res;
	}
	
	/*******************************************************/
	/* Función make_archive ()                             */
	/* --------------------------------------------------- */
	/* Recorre un directorio recursivamente y lo comprime. */
	/*******************************************************/
	function make_archive ($dir, &$zip, $extdir = "")
	{
	  if (is_dir ($dir))
	  {
			if ($dh = opendir ($dir))
			{
	    	while (($file = readdir ($dh)) !== false)
				{
	        if ($file != "." && $file != "..")
	        {
	          $c = 0;
						$dir_zip = substr ($dir, $c);
						if (is_dir ($dir.$file))
	          {
							$zip->addDirectory ($dir_zip.$file);
	            $this->make_archive ($dir.$file."/", $zip, $extdir.$file."/");
	          }
	          else
	          {
							$fileContents = file_get_contents ($dir.$file);
							$zip->addFile ($fileContents, $dir_zip.$file);
	          }
	        }
	      }
	      closedir ($dh);
	    }
	  }
		return true;
	}
	
	/**********************************************************/
	/* Función backup_mysql ()                                */
	/* ------------------------------------------------------ */
	/* Realiza un volcado de la BD especificada en un fichero */
	/* y fuerza su descarga.                                  */
	/**********************************************************/
	function backup_mysql ()
	{
		$this->inicializar ();
		$fich_destino = $this->fich_destino.".dmp";
	  $mysql = new MYSQL_DUMP ($this->bd_host, $this->bd_usr, $this->bd_clave);
		$mysql->setDBHost($this->bd_host, $this->bd_usr, $this->bd_clave);
		if (!$mysql->save_sql ($mysql->dumpDB ($this->bd_nombre), $fich_destino))
		{
			$this->error = "<p>Error al guardar el fichero $fich_destino</p>";
			$res = false;
		}
		else
		{
			$mysql->download_sql ($fich_destino);
			// Elimina el fichero (no funciona sin los permisos de escritura)
			chmod ($fich_destino, 0777);
			@unlink ($fich_destino);
			$res = true;
		}
		return $res;
	}
}
?>
Return current item: Web Server Backup