Изучение файлов БД Berkeley из CLI

У меня есть набор файлов Berkeley DB в моей файловой системе Linux, которые я хотел бы изучить.

какие полезные инструменты существуют для получения быстрого обзора содержимого? Я могу писать сценарии Perl, которые используют модули BDB для их изучения, но я ищу некоторую утилиту CLI, чтобы иметь возможность заглянуть внутрь без необходимости начинать писать сценарии.

8 ответов


Проверьте db-utils пакета. Если вы используете apt, вы можете установить его со следующим: apt-get install db4.4-util (или apt-get install db4.8-util или любая версия, которую вы имеете или предпочитаете.)

Дополнительные ссылки:


использовать . Он содержится в пакете core/db (арка), db-util (Debian, Ubuntu),sys-libs/db (Gentoo, обратите внимание, что здесь двоичный файл называется db4.8_dump или любая версия, которую вы используете).

на некоторых системах man-страницы не установлены, в таком случае документацию можно найти здесь. По умолчанию 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, а не хэша, поэтому мне пришлось использовать 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 (db4-utils под RHEL) имеет некоторые инструменты. Однако db_dump может быть бесполезным, так как выходные данные имеют формат "bytevalue".

для просмотра 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
...

обратите внимание, что dbhash устарел с python 2.6.


утилита db_hotbackup создает моментальные снимки" горячей резервной копии "или" горячей отработки отказа " сред базы данных Беркли DB. Установите его со следующим

apt-get install db-util

затем выполните следующую команду, чтобы взять hot backup

db_hotbackup [- cDEguVv] [- d data_dir ...] [-H дом] [-л log_dir] [-P пароль] -б backup_dir


после установки БД utils вы можете просто сделать db_dump в файле БД.


обратите внимание, что в первоначальном ответе говорится использовать пакет "db-utils", но в примере показан правильный пакет" db-util". (без "ы")


В Amazon Linux вы можете установить его с помощью:

yum установить db43-utils