Comment je récupère mon arbre familial

From Gramps
Revision as of 13:41, 4 July 2009 by Romjerome (talk | contribs) (Comment être informé de cette corruption ?)
Jump to: navigation, search

Une tentative pour expliquer une corruption de GRDB, comment récupérer sa base, et comment l'éviter dans le futur.

Corruption de l'arbre familial

Qu'est ce qui cause cette corruption?

On ne sait pas vraiment. La corruption d'une base de données avec des arbres familiaux est beaucoup moins courante qu'avec le précédent format de stockage des arbres familiaux, utilisé pour la version 2.2.x.

Comment être informé de cette corruption ?

Gramps peut vous informer au démarrage qu'une récupération de la base de données est nécessaire via une boîte de dialogue:

GRAMPS a détecté un problème relatif à la base de données Berkeley.
Ceci peut être résolu depuis le gestionnaire d'arbre familial.
Sélectionnez la base de données et cliquez sur le bouton Réparer.

Mais il est possible qu'aucun bouton Réparer ne soit présent, ou que vous obteniez une erreur (visible dans le terminal)

(-30975, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: Invalid argument').

What to do now?

It is advisable not to click the repair button right away. It should work, but GRAMPS might believe an error is present while this is in reality not true. Repairing your tree then will lead to loss of the last typed changes.

Instead, take a backup of the family tree that is given problems. In a terminal do:

gramps -l 

This will give you a list with all family trees and the directory where they are stored, normally somewhere in the directory ~/.gramps/grampsdb. Copy the directory of the tree with problems so as to have a backup:

cp <target directory> <backup directory>

If the recover button was present on the GRAMPS family tree, click it. All should work again. If you notice you lost information, or the repair button does not work, then do the following. If recovery worked, but you do not like the result, backup this data and place your backup taken above back in its original position. You now have again the bad family tree to work on. Next, obtain the bsddb recovery tools, see your distributions package search page. The program is called db4.6_recover, where 4.6 might be an older or newer version number.

Run this tool as follows:

cd /home/<user>/.gramps/grampsdb/<target directory>
db4.6_recover -c

That should do the trick, and allow GRAMPS to load the family tree. If not, then start a ticket on the gramps bug tracker.

Implement more security

Your genealogy data contains a lot of work and man hours. So work out a backup scheme

If you work on GRAMPS regularly: backup the directory holding the family tree databases. These are very large files however.

If you know you work on GRAMPS sporadically only, or have no space to backup your trees regularly, then do backup in XML format (the .gramps format). The XML format will open up just fine over 5 years on another computer with another OS. This will probably not be the case for the databases a family tree is stored in. XML is machine- and human-readable. It is completely self-sufficient. It is also small. The following are good practices of backups:

  1. Export to XML from time to time, especially after large edits.
  2. Export to XML before making big changes, such as importing new data into an existing database from e.g. GEDCOM, merging records, running tools that may heavily modify the data, etc.
  3. Export to XML before upgrading GRAMPS to a newer version. Apparently, export to XML with old version before you install the new one!
  4. Export to XML before upgrading your OS. 

Also, use XML format for any data migration. Moving to another machine, sending data to grandma, copying to another user on the same machine -- all of these cases should use XML, as there is no binary specific data.

Note that XML does not contain your media files. The gpkg output format contains XML and your media files, with the disadvantage of this being very large. If you already have a backup scheme for your media files, there is no need to also backup gpkg files.

GRDB Corruption (2.2.x)

Pourquoi cette corruption?

De loin, la principale cause d'une corruption du fichier grdb est le déplacement de ce dernier de son emplacement original. Que vous déplaciez le fichier vers un autre répertoire, le renommer, le copier, que vous le transférez vers une autre machine, ou un autre compte utilisateur -- toutes ces actions vont "corrompre" votre fichier.

Ce qui arrive c'est que le fichier grdb a besoin de son environnement de base de données -- un répertoire avec ses fichiers log, fichiers verrous, fichiers temporaires, etc. Les derniers versions stables conservent l'environnement pour chaque fichier, suivant un arbre hierarchique du répertoire ~/.gramps/env. Si votre fichier grdb est sous /home/utilisateur/généalogie/MesDonnées.grdb alors son environnement est dans le répertoire /home/utilisateur/.gramps/env/home/utilisateur/généalogie/MesDonnées.grdb.

Ainsi, le déplacement, la copie ou le renommage du fichier copiera ses bytes, mais pas son environnement. C'est pourquoi le fichier déplacé apparaît comme corrompu.

Que dois je faire maintenant ?

La réponse dépend de la présence ou non de l'environment de votre base de données. Si vous avez simplement copié un fichier vers un autre alors l'environnement devrait toujours fonctionner. Si vous avez modifié votre base de données depuis, alors l'environnement original a changé, il n'y a pas de bon environnement pour votre nouvelle base. Si vous avez déplacé votre répertoire .gramps (pourquoi oh pourquoi ?) alors les environnements seront perdus. Agissez ainsi en fonction de la situation, comme il est expliqué ci-dessous.

L'environnement existe toujours

Si vous avez un répertoire d'environment pour votre fichier, copiez le suivant ces étapes.

Exemple
Vous avez copié /home/utilisateur/généalogie/MesDonnées.grdb vers /home/utilisateur/généalogie/sauvegarde/SauvegardeDonnées.grdb et le nouveau fichier ne fonctionne plus.
Solution
Copier le répertoire /home/utilisateur/.gramps/env/home/utilisateur/généalogie/MesDonnées.grdb dans /home/utilisateur/.gramps/env/home/utilisateur/généalogie/sauvegarde/SauvegardeDonnées.grdb et ceci devrait solutionner le problème.

L'environnement est perdu

Si vous n'avez plus l'environnement original pour ce fichier, vous devriez essayer de mettre en mémoire et charger vos données en utilisant les outils Berkeley DB. Selon votre système, ils peuvent être appelés db_dump et db_load, db41_dump et db41_load, db4.4_dump et db4.4_load, ou quelque chose comme cela. Peut importe leur nom, il devrait y avoir un outil dump et un outil de chargement et ils devraient être de la version 4 ou supérieur.

Simplement, vous mettez le fichier grdb en mémoire via un fichier texte, puis créez un nouveau fichier grdb à partir de ce fichier texte :

   $ db4.4_dump SauvegardeDonnées.grdb > fichier.txt
   $ db4.4_load nouveaufichier.grdb < fichier.txt

et espérez que gramps ouvrira nouveaufichier.grdb.

Si vous obtenez l'error:

db4.4_dump: eidtrans: unsupported hash version: 9

ceci indique que vous avez besoin d'une version plus récente. Utilisez db4.6 tools:

   $ db4.6_dump BackupData.grdb > fichier.txt
   $ db4.6_load newfile.grdb < fichier.txt

Notez: si vous descendez le niveau de votre distribution, alors il sera peut être nécessaire de faire un dump avec les outils 4.6, et de charger avec les outils 4.4 ou 4.5.

Comment prévenir ce type de corruption ?

Bien que déplacer le fichier reste la principale cause de corruption, il semble que d'autres actions moins fréquentes sont également responsables mais pas encore découvertes. Ainsi prévenir d'une corruption n'est pas toujours possible.

Ce qui est possible est de sauvegarder régulièrement ses données. Ces sauvegardes devraient être au format XML (le format .gramps). XML est lisible par la machine- et l'humain. C'est un fichier qui se suffit à lui-même. Il est également léger. Voici les bons moyens pour ces sauvegardes :

  1. Exporter vers XML de temps en temps, surtout après beaucoup d'éditions.
  2. Exporter vers XML avant de faire de grands changements, comme importer de nouvelles données dans une base existante par exemple : GEDCOM; fusionner des enregistrements; utiliser les outils qui peuvent modifier grandement vos données.
  3. Exporter vers XML avant d'utiliser une nouvelle version de gramps. Exporter vers XML avec votre ancienne version avant d'installer la nouvelle !
  4. Exporter vers XML avant de mettre à niveau votre OS.

Aussi, utiliser le format XML pour n'importe quelle migration de données. Déplacer vers une autre machine, envoyer vos données à votre grand-mère, copier vers un autre utilisateur sur la même machine -- dans tous ces cas, vous devriez utiliser XML.