.
*/
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;
}
}