Ответ 1
Проверьте пакет db-utils. Если вы используете apt, вы можете установить его с помощью следующего: apt-get install db-util
(или apt-get install db4.8-util
или любой другой версии, которую вы предпочитаете).
Дополнительные ссылки:
У меня есть набор файлов Berkeley DB в моей файловой системе Linux, которые я бы хотел изучить.
Какие полезные инструменты существуют для быстрого обзора содержимого? Я могу писать скрипты Perl, которые используют BDB-модули для их изучения, но я ищу некоторую утилиту CLI, чтобы иметь возможность заглянуть внутрь, не заставляя писать сценарии.
Проверьте пакет db-utils. Если вы используете apt, вы можете установить его с помощью следующего: apt-get install db-util
(или apt-get install db4.8-util
или любой другой версии, которую вы предпочитаете).
Дополнительные ссылки:
Используйте программу 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
Я нашел ответ @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 (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.
Утилита db_hotbackup создает моментальные снимки "горячей резервной копии" или "горячего восстановления" в среде баз данных Berkeley DB. Установите его со следующими
apt-get install db-util
затем выполните следующую команду, чтобы сделать горячую резервную копию
db_hotbackup [-cDEguVv] [-d data_dir...] [-h home] [-l log_dir] [-P пароль] -b backup_dir
Как только вы установили утилиты db, вы можете просто сделать db_dump в файле db.
Обратите внимание, что в начальном ответе используется пакет "db-utils", но в примере показан правильный пакет "db-util". (без "s" )
В Amazon Linux вы можете установить его с помощью:
yum install db43-utils