Examinar archivos Berkeley DB desde la CLI
-
09-06-2019 - |
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.
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