从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