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.
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);
}