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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top