从CLI检查Berkeley DB文件

我在我的Linux文件系统上有一套伯克利数据库文件,我想检查一下。

有什么有用的工具可以快速浏览内容? 我可以编写使用BDB模块检查它们的Perl脚本,但是我正在寻找一些CLI实用程序,以便能够在不必开始编写脚本的情况下查看。

查看db-utils包。 如果你使用apt,你可以用下面的apt-get install db4.4-util安装它: apt-get install db4.4-util (或者apt-get install db4.8-util或者你喜欢的任何版本)

其他链接:

使用db_dump程序。 它包含在package core/db (Arch), db-util (Debian,Ubuntu), sys-libs/db (Gentoo,注意这里的二进制文件叫做db4.8_dump或者你正在使用的任何版本)。

在某些系统上,手册页没有安装,在这种情况下可以在这里find文档。 默认情况下, db_dump输出一些hex数字,如果您试图分析数据库的内容,这并不是很有用。 使用-p参数来改变它。

显示文件database.db

 db_dump -p database.db 

列出文件database.db中的database.db

 db_dump -l database.db 

仅显示文件database.db中的数据库mydb的内容:

 db_dump -p -s mydb database.db 

我发现@ strickli的答案是最有帮助的,因为我不想用数据库添加任何新的包到机器上。 但是,我读的数据库文件是btreetypes,而不是散列,所以我不得不使用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 ... 

正如其他答案中提到的,db-utils包(RHEL下的db4-utils)有一些工具。 但是,由于输出是“bytevalue”格式,因此db_dump可能无用。

对于quick'n'dirty查看器,使用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 ... 

请注意,自从python 2.6开始,不推荐使用dbhash。

db_hotbackup实用程序将创buildBerkeley DB数据库环境的“热备份”或“热故障转移”快照。 用下面的方法安装它

apt-get install db-util

然后运行以下命令进行热备份

db_hotbackup [-cDEguVv] [-d data_dir …] [-h home] [-l log_dir] [-P密码] -b backup_dir

一旦你安装了数据库实用程序,你可以简单地在数据库文件上做一个db_dump

注意最初的答案是使用“db-utils”包,但是这个例子显示了正确的“db-util”包。 (没有“s”)

在Amazon Linux下,您可以通过以下方式安装它:

yum安装db43-utils