57

我想检查我的 Linux 文件系统上的一组 Berkeley DB 文件。

有哪些有用的工具可以快速浏览内容?我可以编写使用 BDB 模块来检查它们的 Perl 脚本,但我正在寻找一些 CLI 实用程序,以便能够查看内部而无需开始编写脚本。

4

9 回答 9

51

使用该db_dump程序。它包含在包中core/db(Arch)、db-util(Debian、Ubuntu)、sys-libs/db(Gentoo,注意这里调用的是二进制文件db4.8_dump或您使用的任何版本)。

在某些系统上未安装手册页,在这种情况下,可以在此处找到文档。默认情况下,db_dump输出一些十六进制数字,如果您尝试分析数据库的内容,这并不是很有用。使用-p参数来改变这一点。

显示文件中的所有内容database.db

db_dump -p database.db

列出文件中的数据库database.db

db_dump -l database.db

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

db_dump -p -s mydb database.db
于 2015-12-20T01:47:41.510 回答
24

查看db-utils包。如果您使用 apt,则可以使用以下内容安装它:(apt-get install db-utilapt-get install db4.8-util您拥有或喜欢的任何版本。)

附加链接:

于 2008-09-01T09:24:51.850 回答
15

我发现@strickli 的答案是最有帮助的,因为我不想将任何新包添加到我所在的数据库的机器上。但是,我正在读取的 db 文件是 btree 类型,而不是哈希,所以我不得不使用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
...
于 2014-04-11T16:48:57.870 回答
9

正如其他答案中提到的,db-utils 包(RHEL 下的 db4-utils)有一些工具。但是,db_dump 可能没有帮助,因为输出是“字节值”格式。

对于快速'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。

于 2013-11-05T16:07:06.513 回答
6

db_hotbackup 实用程序创建 Berkeley DB 数据库环境的“热备份”或“热故障转移”快照。使用以下命令安装它

apt-get 安装 db-util

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

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

于 2012-02-20T03:52:15.597 回答
6

安装 db utils 后,您可以简单地对 db 文件执行db_dump

于 2013-02-15T00:55:27.387 回答
3

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

于 2013-03-20T20:04:36.833 回答
1

在 Amazon Linux 下,您可以使用以下命令安装它:

百胜安装 db43-utils

于 2015-04-27T19:54:36.863 回答
0

蟒蛇 3

from bsddb3 import db
import collections
d = db.DB()
d.open('./file.dat', 'dbname', db.DB_BTREE, db.DB_THREAD | db.DB_RDONLY)
d.keys()
collections.OrderedDict((k, d[k]) for k in d.keys())
于 2022-02-23T20:25:49.943 回答