Examining Berkeley DB files from the CLI

2019-01-31 02:51发布

I have a set of Berkeley DB files on my Linux file system that I'd like to examine.

What useful tools exist for getting a quick overview of the contents? I can write Perl scripts that use BDB modules for examining them, but I'm looking for some CLI utility to be able to take a look inside without having to start writing scripts.

8条回答
啃猪蹄的小仙女
2楼-- · 2019-01-31 03:06

I found @strickli's answer to be the most helpful, as I didn't want to add any new packages to the machine with the database I was on. However, the db file I was reading was of type btree, not hash, so I had to use 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
...
查看更多
我想做一个坏孩纸
3楼-- · 2019-01-31 03:06

Under Amazon Linux you can install it with:

yum install db43-utils

查看更多
forever°为你锁心
4楼-- · 2019-01-31 03:07

Check out the db-utils package. If you use apt, you can install it with the following: apt-get install db4.4-util (or apt-get install db4.8-util or whatever version you have or prefer.)

Additional links:

查看更多
霸刀☆藐视天下
5楼-- · 2019-01-31 03:07

As mentioned in the other answers, the db-utils package (db4-utils under RHEL) has some tools. However, db_dump can be unhelpful, since the output is 'bytevalue' format.

For a quick'n'dirty viewer, 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
...

Note that dbhash is deprecated since python 2.6.

查看更多
Rolldiameter
6楼-- · 2019-01-31 03:17

Once you have installed the db utils you can simple do a db_dump on the db file.

查看更多
男人必须洒脱
7楼-- · 2019-01-31 03:20

Use the db_dump program. It is contained in the package core/db (Arch), db-util (Debian, Ubuntu), sys-libs/db (Gentoo, note that here the binary is called db4.8_dump or whatever version you are using).

On some systems the man pages are not installed, in that case the documentation can be found here. By default, db_dump outputs some hex numbers, which is not really useful if you are trying to analyse the content of a database. Use the -p argument to change this.

Show everything that’s in the file database.db:

db_dump -p database.db

List the databases in the file database.db:

db_dump -l database.db

Show only the content of the database mydb in the file database.db:

db_dump -p -s mydb database.db
查看更多
登录 后发表回答