Question

J'ai un ensemble de fichiers Berkeley DB sur mon système de fichiers Linux que j'aimerais examiner.

Quels outils utiles existent pour obtenir un aperçu rapide du contenu ?Je peux écrire des scripts Perl qui utilisent des modules BDB pour les examiner, mais je recherche un utilitaire CLI pour pouvoir jeter un œil à l'intérieur sans avoir à commencer à écrire des scripts.

Était-ce utile?

La solution

Vérifiez db-utils emballer.Si vous utilisez apt, vous pouvez l'installer avec ce qui suit : apt-get install db4.4-util (ou apt-get install db4.8-util ou quelle que soit la version que vous possédez ou préférez.)

Liens supplémentaires :

Autres conseils

Utilisez le db_dump programme.Il est contenu dans le colis core/db (Cambre), db-util (Debian, Ubuntu), sys-libs/db (Gentoo, notez qu'ici le binaire s'appelle db4.8_dump ou quelle que soit la version que vous utilisez).

Sur certains systèmes les pages de manuel ne sont pas installées, dans ce cas la documentation peut être trouvée ici.Par défaut, db_dump génère des nombres hexadécimaux, ce qui n'est pas vraiment utile si vous essayez d'analyser le contenu d'une base de données.Utilisez le -p argument pour changer cela.

Afficher tout ce qu'il y a dans le fichier database.db:

db_dump -p database.db

Lister les bases de données dans le fichier database.db:

db_dump -l database.db

Afficher uniquement le contenu de la base de données mydb dans le fichier database.db:

db_dump -p -s mydb database.db

J'ai trouvé la réponse de @strickli la plus utile, car je ne voulais pas ajouter de nouveaux packages à la machine avec la base de données sur laquelle j'étais.Cependant, le fichier db que je lisais était de type btree, pas de hachage, j'ai donc dû utiliser bsddb

# file foo.db
foo.db: Berkeley DB (Btree, version 9, native byte-order)

# python
>>> import bsddb
>>> for k, v in bsddb.btopen("*<db filename here...>*").iteritems():
...     print k,v
...

Comme mentionné dans les autres réponses, le package db-utils (db4-utils sous RHEL) dispose de quelques outils.Cependant, db_dump peut s'avérer inutile, puisque la sortie est au format « bytevalue ».

Pour une visionneuse rapide, utilisez python :

me@machine$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
>>> import dbhash
>>> for k, v in dbhash.open( *<db filename here...>* ).iteritems(): print k, v
...

Notez que dbhash est obsolète depuis python 2.6.

L'utilitaire db_hotbackup crée des instantanés de « sauvegarde à chaud » ou de « basculement à chaud » des environnements de base de données Berkeley DB.Installez-le avec ce qui suit

apt-get installer db-util

puis exécutez la commande suivante pour effectuer une sauvegarde à chaud

db_hotbackup [-cdeguvv] [-d data_dir ...] [-h home] [-l log_dir] [-p mot de passe] -b backup_dir

Une fois que vous avez installé les utilitaires de base de données, vous pouvez simplement faire un db_dump sur le fichier db.

Notez que la réponse initiale indique d'utiliser le package "db-utils", mais l'exemple montre le package "db-util" correct.(sans "s")

Sous Amazon Linux vous pouvez l'installer avec :

miam, installez db43-utils

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top