Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Используйте программу 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

Ответ 3

Я нашел ответ @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
...

Ответ 4

Как упоминалось в других ответах, пакет db-utils (db4-utils под RHEL) имеет некоторые инструменты. Тем не менее, db_dump может быть бесполезным, так как выход имеет формат "bytevalue".

Для quick'n'dirty viewer используйте python:

[email protected]$ 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.

Ответ 5

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

apt-get install db-util

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

db_hotbackup [-cDEguVv] [-d data_dir...] [-h home]       [-l log_dir] [-P пароль] -b backup_dir

Ответ 6

Как только вы установили утилиты db, вы можете просто сделать db_dump в файле db.

Ответ 7

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

Ответ 8

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

yum install db43-utils