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

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

有帮助吗?

解决方案

查看 数据库实用程序 包裹。如果您使用 apt,则可以使用以下命令安装它: apt-get install db4.4-util (或者 apt-get install db4.8-util 或您拥有或喜欢的任何版本。)

附加链接:

其他提示

使用 db_dump 程序。它包含在包装中 core/db (拱), 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

我发现 @strickli 的答案是最有帮助的,因为我不想使用我所在的数据库向计算机添加任何新包。然而,我正在读取的db文件是btree类型,而不是hash类型,所以我不得不使用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)有一些工具。但是,db_dump 可能没有帮助,因为输出是“字节值”格式。

对于快速查看器,请使用 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 实用程序创建 Berkeley DB 数据库环境的“热备份”或“热故障转移”快照。使用以下命令安装它

apt-get 安装 db-util

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

db_hotbackup [-cdeguvv] [-d data_dir ...] [-h home] [-l log_dir] [-p密码] -b backup_dir

安装 db utils 后,您可以简单地执行以下操作 数据库转储 在数据库文件上。

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

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

百胜安装 db43-utils

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top