Pregunta

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

¿Qué herramientas útiles existen para obtener una visión general rápida 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.

¿Fue útil?

Solución

Revisar la utilidades db paquete.Si usa apt, puede instalarlo con lo siguiente: apt-get install db4.4-util (o apt-get install db4.8-util o cualquier versión que tengas o prefieras.)

Enlaces adicionales:

Otros consejos

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

En algunos sistemas las páginas de manual no están instaladas, en ese caso se puede encontrar la documentación aquí.Por defecto, db_dump genera algunos números hexadecimales, lo cual no es realmente útil si intentas analizar el contenido de una base de datos.Utilizar el -p argumento para cambiar esto.

Mostrar todo lo que hay en el archivo. database.db:

db_dump -p database.db

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

db_dump -l database.db

Mostrar solo el contenido de la base de datos. mydb en el archivo database.db:

db_dump -p -s mydb database.db

La respuesta de @strickli me pareció 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 btree, no 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
...

Como se menciona en las otras respuestas, el paquete db-utils (db4-utils en RHEL) tiene algunas herramientas.Sin embargo, db_dump puede resultar inútil, ya que la salida tiene el formato 'valor de byte'.

Para un visor rápido y sucio, use 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
...

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

La utilidad db_hotbackup crea instantáneas de "copia de seguridad en caliente" o "conmutación por error en caliente" de los entornos de bases de datos Berkeley DB.Instálalo con lo siguiente

apt-get instalar db-util

luego ejecute el siguiente comando para realizar una copia de seguridad en caliente

db_hotbackup [-cdeguuvv] [-d data_dir ...] [-h home] [-l log_dir] [-p contraseña] -b backup_dir

Una vez que haya instalado las utilidades db, puede simplemente hacer una db_dump en el archivo db.

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

En Amazon Linux puedes instalarlo con:

yum instalar db43-utils

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top