Nl:Het herstellen van een corrupt gegevensbestand

From Gramps
Revision as of 08:20, 4 July 2008 by Erikdr (talk | contribs)
Jump to: navigation, search

Dit is een poging om uit te leggen hoe een gegevensbestand corrupt wordt. Hoe kan je je gegevens herstellen en hoe voorkom je dat je gegevens corrupt worden.

GRAMPS 3.0

Deze pagina werd nog niet aangepast voor GRAMPS versie 3.x.

Waarom worden de gegevens corrupt?

De voornaamste oorzaak is het verplaatsen van een grdb-bestand. Indien je dit bestand verplaatst naar een andere map, de bestandsnaam verandert,het bestand copiëert naar een ander bestand, het bestand verplaatst naar een andere computer of een andere gebruiker kunnen de gegevens 'corrupt' worden.

Hoe komt dit?

Het grdb-bestand heeft een gegevensbestandsomgeving nodig -- dit is een map met log-bestanden, slot-bestanden, tijdelijke bestanden enz.

De huidige stabiele GRAMPS-versie slaat deze bestandsomgeving op in een ~/.gramps/env boomstruktuur.

Stel dat je grdb-bestand /home/gebruiker/genealogie/MijnGegevens.grdb noemt, dan is de gegevensbestandsomgeving in de /home/gebruiker/.gramps/env/home/gebruiker/genealogie/MijnGegevens.grdb map te vinden.

Indien je dus het gegevensbestand verplaatst, copiëert of herbenoemt zullen de gegevens wel verplaatst worden, maar niet de opmgeving. Zo geraken de gegevens corrupt.

Wat moet ik nu doen?

The answer depends on whether or not you have the environment for that database. If you just copied one file into another then the environment still may work. If you modified the original database since then, then the original environment has chanegd and there's no good environment for the new file. If you removed your .gramps directory (why oh why?) then all environments are lost. So act depending on the situation, as explained below.

De omgeving bestaat nog

If you have environment directory for that file, copy it under the above gudelines.

Example
You copied /home/user/genealogy/MyData.grdb to /home/user/genealogy/backup/BackupData.grdb and the new file is not working.
Solution
Copy /home/user/.gramps/env/home/user/genealogy/MyData.grdb directory into /home/user/.gramps/env/home/user/genealogy/backup/BackupData.grdb and this should fix the problem.

De omgeving is verloren

If you don't have the original environment for that file, you may try dumping and loading your data using Berkeley DB tools. Depending on your system, they may be called db_dump and db_load, db41_dump and db41_load, db4.4_dump and db4.4_load, or some such. Whatever they are called, there should be be a dump tool and a load tool, and they should be version 4 or later.

Basically, you just dump the grdb into a text file, then create a new grdb from that text file:

   $ db4.4_dump BackupData.grdb > somefile.txt
   $ db4.4_load newfile.grdb < somefile.txt

and then cross your heart and hope that newfile.grdb will open in gramps.

How to prevent corruption?

While moving the file is the leading cause of corruption, apparently there are other less frequent causes that we don't fully know. So preventing corruption is not always possible.

What is possible though is to backup the data regularly. The backups should be in XML format (the .gramps format). XML is machine- and human-readable. It is completely self-sufficient. It is also smalll. Following are the 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.

Kunnen jullie dat niet oplossen ?

Ja, dat kunnen we! In de volgende versie (GRAMPS 3.0/4.0) zal dit stuk volledig herwerkt zijn, zie hier.