Examining Berkeley DB files from the CLI

前端 未结 8 1812
野趣味
野趣味 2020-12-23 12:35

I have a set of Berkeley DB files on my Linux file system that I\'d like to examine.

What useful tools exist for getting a quick overview of the contents? I can writ

相关标签:
8条回答
  • 2020-12-23 12:58

    Under Amazon Linux you can install it with:

    yum install db43-utils

    0 讨论(0)
  • 2020-12-23 13:06

    I found @strickli's answer to be the most helpful, as I didn't want to add any new packages to the machine with the database I was on. However, the db file I was reading was of type btree, not hash, so I had to use 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
    ...
    
    0 讨论(0)
  • 2020-12-23 13:08

    Once you have installed the db utils you can simple do a db_dump on the db file.

    0 讨论(0)
  • 2020-12-23 13:09

    The db_hotbackup utility creates "hot backup" or "hot failover" snapshots of Berkeley DB database environments. Install it with the following

    apt-get install db-util

    then run following command to take hot backup

    db_hotbackup [-cDEguVv] [-d data_dir ...] [-h home] [-l log_dir] [-P password] -b backup_dir

    0 讨论(0)
  • 2020-12-23 13:13

    Use the db_dump program. It is contained in the package core/db (Arch), db-util (Debian, Ubuntu), sys-libs/db (Gentoo, note that here the binary is called db4.8_dump or whatever version you are using).

    On some systems the man pages are not installed, in that case the documentation can be found here. By default, db_dump outputs some hex numbers, which is not really useful if you are trying to analyse the content of a database. Use the -p argument to change this.

    Show everything that’s in the file database.db:

    db_dump -p database.db
    

    List the databases in the file database.db:

    db_dump -l database.db
    

    Show only the content of the database mydb in the file database.db:

    db_dump -p -s mydb database.db
    
    0 讨论(0)
  • 2020-12-23 13:13

    As mentioned in the other answers, the db-utils package (db4-utils under RHEL) has some tools. However, db_dump can be unhelpful, since the output is 'bytevalue' format.

    For a quick'n'dirty viewer, use 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
    ...
    

    Note that dbhash is deprecated since python 2.6.

    0 讨论(0)
提交回复
热议问题