2008-09-01 11 views
47

Tengo un conjunto de archivos Berkeley DB en mi sistema de archivos Linux que me gustaría examinar.Examinando los archivos Berkeley DB de la CLI

¿Qué herramientas útiles existen para obtener una visión general de los contenidos? Puedo escribir scripts Perl que usan módulos BDB para examinarlos, pero estoy buscando alguna utilidad CLI para poder echar un vistazo al interior sin tener que empezar a escribir scripts.

Respuesta

23

Consulte el paquete db-utils. Si usa apt, se puede instalar con lo siguiente: (. Versión o apt-get install db4.8-util o lo que sea que tenga o prefiere) apt-get install db4.4-util

enlaces adicionales:

+4

Un ejemplo de cómo dar sentido a la salida del db4.8_dump o lo que sea a partir de ese paquete sería práctico. El formato de salida ni siquiera se describe en la página del volcado, e incluso eso no describe el formato 'bytevalue' o lo que sea ... Para obtener resultados más bonitos sin la necesidad de encontrar e instalar un paquete, consulte las respuestas usando python, por ejemplo por trjh. – nealmcb

+2

mi paquete era nombres por los 'db-util' – user123456

6

La utilidad db_hotbackup crea instantáneas de "respaldo en caliente" o "conmutación por error en caliente" de B entornos de base de datos erkeley DB. Instalarlo con el siguiente

apt-get install db-util

continuación, ejecute siguiente comando para tener copia de seguridad en caliente

db_hotbackup [-cDEguVv] [-d data_dir ...] [- h Inicio] [-l log_dir] [-P contraseña] -b BACKUP_DIR

5

una vez que haya instalado las utilidades db se puede hacer una sencilla db_dump en el archivo db.

2

Tenga en cuenta que la respuesta inicial dice usar el paquete "db-utils", pero el ejemplo muestra el paquete "db-util" correcto. (sin "s")

8

Como se menciona en las otras respuestas, el paquete db-utils (db4-utils en RHEL) tiene algunas herramientas. Sin embargo, db_dump puede ser inútil, ya que el resultado es el formato 'bytevalue'.

Para un espectador quick'n'dirty, usar Python:

[email protected]$ 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 
... 

Tenga en cuenta que dbhash está en desuso desde Python 2.6.

12

Encontré que la respuesta de @ strickli es la más útil, ya que no quería agregar ningún paquete nuevo a la máquina con la base de datos en la que estaba. Sin embargo, el archivo db que estaba leyendo era de tipo árbolB, no de hash, así que tuve que usar 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 
... 
1

Bajo Amazon Linux se puede instalar con:

yum install db43-utils

19

Utilice el programa db_dump. Está contenido en el paquete core/db (Arch), db-util (Debian, Ubuntu), sys-libs/db (Gentoo, tenga en cuenta que aquí el binario se llama db4.8_dump o la versión que esté usando).

En algunos sistemas las páginas man no están instalados, en caso de que la documentación se puede encontrar here. Por defecto, db_dump genera algunos números hexadecimales, lo que no es realmente útil si está intentando analizar el contenido de una base de datos. Use el argumento -p para cambiar esto.

mostrar todo lo que está en el archivo database.db:

db_dump -p database.db 

Lista de las bases de datos en el archivo database.db:

db_dump -l database.db 

Muestra sólo el contenido de la base de datos mydb en el archivo database.db:

db_dump -p -s mydb database.db 
+2

respuesta debe ser superior – alexg

Cuestiones relacionadas