. */ class CopiaSeguridad { private $mensaje; private $baseDatos; private $imagenes; 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; } }