3.7. Copias de seguridad

Como señalábamos con anterioridad, todos los cambios hechos en las claves almacenadas en gconf son automáticamente guardados la primera vez que se efectúa una operación de escritura o borrado. En consecuencia, todos esos cambios pueden ser recuperados automáticamente si el usuario desea descartar o recuperarlos de un fichero. Por supuesto esto ocurre siempre que se usen las funciones provistas a tal efecto por EBox::GConfModule.

Si su módulo tiene parte o la totalidad de su configuración independiente de GConf, deberá implementar los métodos dumpConfig y restoreConfig.

Adicionalmente, si aparte de la configuración desea copiar otros tipo de datos asociados al módulo que no forman parte de su configuración, como por ejemplo ficheros de usuarios, deberá también implementar los métodos extendedBackup y extendedRestore. Recuerde que este tipo de información sólo será guardada y restaurada si el usuario lo solicita explícitamente.

El módulo usersandgroups almacena su configuración (usuarios, grupos, contraseñas, ..) en el servidor de LDAP. Por este motivo deberemos guardar y recuperar posteriormente la información guardada en openldap para poder realizar copias de seguridad de este módulo correctamente. Veamos como podemos hacerlo:

Ejemplo 3.14. Sobreescribiendo funciones para las copias de seguridad

sub dumpConfig
{
  my ($self, $dir) = @_;
 
  $self->{ldap}->dumpLdapData($dir);
}


sub restoreConfig
{
  my ($self, $dir) = @_;

  $self->{ldap}->loadLdapData($dir);
}

El módulo ebox-logs es el encargado de la administración de los registros de eBox. Deseamos tener la posibilidad de hacer copia de seguridad de sus contenidos. Como dichos contenidos no forman parte de la configuración del módulo usaremos extendedBackup y extendedRestore. Los datos no pertenecientes a la configuración sólo se almacenarán en la copia de seguridad si el usuario así lo elige.

A continuación, mostramos como ebox-logs implementa estas características:

Ejemplo 3.15. Sobreescribiendo funciones para las copias de seguridad extendidas

sub extendedBackup
{
  my ($self, %params) = @_;
  my $dir    = $params{dir};
  
  my $dbengine = EBox::DBEngineFactory::DBEngine();
  my $dumpFile = "$dir/eboxlogs.dump";

  $dbengine->dumpDB($dumpFile);
}


sub extendedRestore
{
  my ($self, %params) = @_;
  my $dir    = $params{dir};

  my $dbengine = EBox::DBEngineFactory::DBEngine();
  my $dumpFile = "$dir/eboxlogs.dump";

  $dbengine->restoreDB($dumpFile);
}