Изучение файлов БД 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
обратите внимание, что в первоначальном ответе говорится использовать пакет "db-utils", но в примере показан правильный пакет" db-util". (без "ы")