Linux ファイル システム上に、調べたい一連の Berkeley DB ファイルがあります。
コンテンツの概要をすばやく把握するための便利なツールは何ですか? BDB モジュールを使用して検査する Perl スクリプトを作成することはできますが、スクリプトを作成しなくても内部を確認できる CLI ユーティリティを探しています。
Linux ファイル システム上に、調べたい一連の Berkeley DB ファイルがあります。
コンテンツの概要をすばやく把握するための便利なツールは何ですか? BDB モジュールを使用して検査する Perl スクリプトを作成することはできますが、スクリプトを作成しなくても内部を確認できる CLI ユーティリティを探しています。
プログラムを使用しdb_dump
ます。これは、パッケージcore/db
(Arch)、db-util
(Debian、Ubuntu)、 (Gentoo、ここではバイナリまたは使用しているバージョンsys-libs/db
が呼び出されていることに注意してください) に含まれています。db4.8_dump
一部のシステムでは、man ページがインストールされていません。その場合、ドキュメントはここにあります。デフォルトでは、db_dump
いくつかの 16 進数を出力しますが、これはデータベースの内容を分析しようとしている場合にはあまり役に立ちません。-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
db-utilsパッケージを確認してください。apt を使用する場合は、次の方法でインストールできます: apt-get install db-util
(またはapt-get install db4.8-util
、お持ちのバージョンまたは好みのバージョン)。
追加のリンク:
私が使用していたデータベースを使用しているマシンに新しいパッケージを追加したくなかったので、@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 パッケージ (RHEL の db4-utils) にはいくつかのツールがあります。ただし、出力が「bytevalue」形式であるため、db_dump は役に立たない場合があります。
簡単なビューアーを作成するには、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
...
Python 2.6 以降、dbhash は非推奨になっていることに注意してください。
db_hotbackup ユーティリティは、Berkeley DB データベース環境の「ホット バックアップ」または「ホット フェイルオーバー」スナップショットを作成します。以下でインストールします
apt-get インストール db-util
次に、次のコマンドを実行してホットバックアップを取得します
db_hotbackup [-cDEguVv] [-d data_dir ...] [-h home] [-l log_dir] [-P password] -b backup_dir
db utils をインストールしたら、db ファイルでdb_dumpを簡単に実行できます。
最初の回答では「db-utils」パッケージを使用するように指示されていますが、例では正しい「db-util」パッケージが示されていることに注意してください。(「s」なし)
Amazon Linux では、次の方法でインストールできます。
yum インストール db43-utils