Проверка файлов Berkeley DB из командной строки
-
09-06-2019 - |
Вопрос
У меня есть набор файлов Berkeley DB в моей файловой системе Linux, которые я хотел бы изучить.
Какие полезные инструменты существуют для получения краткого обзора содержимого?Я могу писать скрипты на Perl, которые используют модули BDB для их изучения, но я ищу какую-нибудь утилиту CLI, которая могла бы заглянуть внутрь, не начиная писать скрипты.
Решение
Посмотрите на db-утилиты посылка.Если вы используете apt, вы можете установить его следующим образом: apt-get install db4.4-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 наиболее полезным, поскольку я не хотел добавлять какие-либо новые пакеты на компьютер с базой данных, на которой я находился. Однако файл БД, который я читал, имел тип 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'.
Для быстрого и полезного просмотра используйте 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 создает " горячую резервную копию " или «горячее переключение при сбое» снимки сред баз данных 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