Exemplo n.º 1
0
 /**
  * Método para descargar
  */
 public function descargar($key = '')
 {
     if (!($id = DwSecurity::isValidKey($key, 'descargar_backup', 'int'))) {
         return View::ajax();
     }
     $backup = new Backup();
     if (!$backup->find_first($id)) {
         DwMessage::get('id_no_found');
         return DwRedirect::toAction('listar');
     }
     $file = APP_PATH . 'temp/backup/' . $backup->archivo;
     if (!is_file($file)) {
         DwMessage::warning('No hemos podido localizar el archivo. Por favor contacta al administrador del sistema.');
         DwAudit::error("No se ha podido encontrar la copia de seguridad {$backup->archivo} en el sistema");
         return DwRedirect::toAction('listar');
     }
     View::template(NULL);
     $this->backup = $backup;
 }
Exemplo n.º 2
0
 /**
  * Método para restaurar el sistema
  * @param type $id
  */
 public static function restoreBackup($id, $path = '')
 {
     $id = Filter::get($id, 'int');
     if (empty($id)) {
         return FALSE;
     }
     $obj = new Backup();
     if (!$obj->find_first($id)) {
         DwMessage::get('id_no_found');
         return FALSE;
     }
     if (empty($path)) {
         $path = APP_PATH . 'temp/backup/';
     }
     $file = $path . $obj->archivo;
     if (!is_file($file)) {
         DwMessage::error('Error: BKP-RES001. Se ha producido un error en la restauración del sistema. <br />No se pudo localizar el archivo de restaruación.');
         return FALSE;
     }
     //Almaceno las copias de seguridad anteriores
     $old_backup = $obj->find('order: registrado_at ASC');
     $system = $obj->_getSystem(TRUE);
     //Verifico el sistema operativo para la restauración
     $database = Config::get('config.application.database');
     //tomo el entorno actual
     $config = $obj->_getConfig($database);
     //Tomo la configuración de conexión
     $exec = "gunzip < {$file} | {$system} -h " . $config['host'] . " -u " . $config['username'] . " --password="******" " . $config['name'];
     system($exec, $result);
     if (!$result) {
         //Inserto los backups anteriores
         foreach ($old_backup as $backup) {
             if ($backup->id >= $obj->id) {
                 $obj->sql("REPLACE INTO `backup` (`id`,`usuario_id`,`denominacion`,`tamano`,`archivo`,`registrado_at`) VALUES ('{$backup->id}', '{$backup->usuario_id}', '{$backup->denominacion}', '{$backup->tamano}', '{$backup->archivo}', '{$backup->registrado_at}')");
             }
         }
         if ($obj) {
             DwAudit::debug("Se ha restaurado el sistema con la copia de seguridad: {$obj->denominacion}");
         }
         return $obj ? $obj : FALSE;
     }
     return FALSE;
 }
Exemplo n.º 3
0
 /**
  * Método para descargar
  */
 public function descargar($key = '')
 {
     if (!($id = Security::getKey($key, 'descargar_backup', 'int'))) {
         return Redirect::toAction('listar');
     }
     $backup = new Backup();
     if (!$backup->find_first($id)) {
         Flash::info('La copia de seguridad no se encuentra registrada en la base de datos');
         return Redirect::toAction('listar');
     }
     $file = APP_PATH . 'temp/backup/' . $backup->archivo;
     if (!is_file($file)) {
         Flash::warning('No hemos podido localizar el archivo. Por favor contacta al administrador del sistema.');
         DwAudit::error("No se ha podido encontrar la copia de seguridad {$backup->archivo} en el sistema");
         return Redirect::toAction('listar');
     }
     View::template(NULL);
     $this->backup = $backup;
 }