. * */ class CopiaSeguridad { private $mensaje; private $baseDatos; private $imagenes; public function __construct() { $opcion = $_GET['opc']; } public function creaCopia() { if (!$this->copiaBaseDatos()) { return false; } if (!$this->copiaImagenes()) { return false; } if (!$this->empaqueta()) { return false; } return true; } public function dialogo() { $dialogo = '

Copia de Seguridad

¿Desea realizar una copia de seguridad de todos los datos de la Base de Datos y de todas las Imágenes?

Volver Continuar

'; return $dialogo; } private function copiaBaseDatos() { $archivo_sql = "tmp/baseDatos" . BASEDATOS . ".sql"; $baseDatosComprimida = $archivo_sql . ".gz"; $this->baseDatos = $baseDatosComprimida; if (file_exists($baseDatosComprimida)) { unlink($baseDatosComprimida); } $comando = escapeshellcmd(MYSQLDUMP . ' -h ' . SERVIDOR . ' -P ' . PUERTO . ' -u ' . USUARIO . ' --password=' . CLAVE . ' --result-file=' . $archivo_sql . ' ' . BASEDATOS); $comando2 = escapeshellcmd(GZIP . ' -9f ' . $archivo_sql); exec($comando); exec($comando2); if (filesize($baseDatosComprimida) < 1024) { //No se ha realizado la copia de seguridad $mensaje = "La copia de seguridad no se ha realizado correctamente.

"; $mensaje .= "Compruebe que las rutas a los programas mysqldump y gzip en configuración están correctamente establecidas "; $mensaje .= "y que los datos de acceso a la base de datos sean correctos.
"; $mensaje .= "mysqldump=[" . MYSQLDUMP . "]
"; $mensaje .= "gzip=[" . GZIP . "]"; $this->mensaje = $mensaje; $this->error = true; return false; } return true; } private function copiaImagenes() { $copiaImagenes = "tmp/Imagenes.tbz"; $this->imagenes = $copiaImagenes; if (file_exists($copiaImagenes)) { unlink($copiaImagenes); } $comando = escapeshellcmd('tar cf ' . $copiaImagenes . ' ' . IMAGEDATA); exec($comando); if (filesize($copiaImagenes) == 0) { $this->error = true; $mensaje = "No se ha podido comprimir el directorio de las imágenes " . IMAGEDATA . "
"; $mensaje .= "Compruebe que la ruta de acceso al programa tar en configuración está correctamente establecida"; $this->mensaje = $mensaje; return false; } return true; } private function empaqueta() { // Empaqueta los dos archivos en el que va a devolver $nombreCopia = "tmp/Copia" . BASEDATOS . strftime("%Y%m%d%H%M") . ".tar"; if (file_exists($nombreCopia)) { unlink($nombreCopia); } $comando = escapeshellcmd('tar cf ' . $nombreCopia . ' ' . $this->baseDatos . ' ' . $this->imagenes); exec($comando); if (filesize($nombreCopia) ==0 || !file_exists($nombreCopia)) { $this->error = true; $mensaje = "No se ha creado el paquete con los archivos de imágenes en [" . $this->imagenes . "] y
"; $mensaje .= " con el archivo de Base de Datos [" . $this->baseDatos . "]

"; $mensaje .= "Compruebe que los datos de configuración están correctamente establecidos
"; $mensaje .= "El comando de copia fue [" . $comando . "]
"; $mensaje .= "gzip=[" . GZIP . "]"; $this->mensaje = $mensaje; return false; } $this->error = false; unlink ($this->baseDatos); unlink ($this->imagenes); $mensaje = 'Copia de seguridad realizada con éxito.

Pulse sobre el siguiente enlace para descargar:

'; $mensaje .= 'Descargar Copia de Seguridad de Datos

'; $mensaje .= 'El paquete de copia contiene un archivo con la copia de la información de la base de datos y un archivo que contiene el directorio de las fotografías e imágenes asociadas a los datos'; $this->mensaje = $mensaje; return true; } public function mensaje () { return $this->mensaje; } } ?>