Examinando arquivos Berkeley DB da CLI
-
09-06-2019 - |
Pergunta
Tenho um conjunto de arquivos Berkeley DB em meu sistema de arquivos Linux que gostaria de examinar.
Que ferramentas úteis existem para obter uma rápida visão geral do conteúdo?Posso escrever scripts Perl que usam módulos BDB para examiná-los, mas estou procurando algum utilitário CLI para poder dar uma olhada no interior sem precisar começar a escrever scripts.
Solução
Confira a db-utils pacote.Se você usa o apt, você pode instalá-lo com o seguinte: apt-get install db4.4-util
(ou apt-get install db4.8-util
ou qualquer versão que você tenha ou prefira.)
Links adicionais:
Outras dicas
Use o db_dump
programa.Está contido no pacote core/db
(Arco), db-util
(Debian, Ubuntu), sys-libs/db
(Gentoo, note que aqui o binário é chamado db4.8_dump
ou qualquer versão que você esteja usando).
Em alguns sistemas as páginas man não estão instaladas, nesse caso a documentação pode ser encontrada aqui.Por padrão, db_dump
gera alguns números hexadecimais, o que não é realmente útil se você estiver tentando analisar o conteúdo de um banco de dados.Use o -p
argumento para mudar isso.
Mostre tudo o que está no arquivo database.db
:
db_dump -p database.db
Liste os bancos de dados no arquivo database.db
:
db_dump -l database.db
Mostrar apenas o conteúdo do banco de dados mydb
no arquivo database.db
:
db_dump -p -s mydb database.db
Achei a resposta de @strickli a mais útil, pois não queria adicionar nenhum pacote novo à máquina com o banco de dados em que estava.Porém, o arquivo db que eu estava lendo era do tipo btree, não hash, então tive 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
...
Conforme mencionado nas outras respostas, o pacote db-utils (db4-utils no RHEL) possui algumas ferramentas.No entanto, db_dump pode ser inútil, pois a saída está no formato 'bytevalue'.
Para um visualizador rápido e sujo, 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
...
Observe que o dbhash está obsoleto desde o python 2.6.
O utilitário db_hotbackup cria instantâneos de "backup a quente" ou "failover a quente" de ambientes de banco de dados Berkeley DB.Instale-o com o seguinte
apt-get install db-util
em seguida, execute o seguinte comando para fazer backup a quente
db_hotbackup [-cDEguVv] [-d data_dir ...] [-h casa] [-l log_dir] [-P senha] -b backup_dir
Depois de instalar os utilitários db, você pode simplesmente fazer um db_dump no arquivo db.
Observe que a resposta inicial diz para usar o pacote "db-utils", mas o exemplo mostra o pacote "db-util" correto.(sem "s")
No Amazon Linux você pode instalá-lo com:
yum instalar db43-utils