# DBFS # (Database Filesystem) DBFS is a FUSE file system utilizing an SQL database as the file system's backend. It mimics regular block storage in database tables, storing hash values of each block and maintains uniqueness among these blocks using those hash values. As a result, this file system can theoretically store more data while utilizing less actual data storage space. Other benefits include fast/easy snapshot-ting, forking and indexing. ### Usage ### ``` Usage: dbfs Arguments> --help Display usage and version information about this application. --run Attempt to mount and run the database file system as configured. This is blocking and is optimized to run via systemd but can still run without systemd if desired. --config Use this option to point to a json formatted file to configure the application's behavior upon mounting the database file system. If not present, it will use the default config file location. --config_help Display details about the json config file and the various elements it uses to change application behavior. --list_db_drvs List all QT based database drivers the application currently supports. Any value returned by this command line argument can then be used in "db_drv" inside of the config file to pick which type of database you desire to use. ``` ### Build Setup ### For Linux you need the following packages to successfully build/install: ``` fuse3 libfuse3-3 libfuse3-dev qtbase5-dev gcc make python3 ``` Note: At this time, this application only supports Linux based platforms. ### Build ### To build this project from source you just need to run the build.py and then the install.py python scripts. While running the build the script, it will try to find the Qt API installed in your machine according to the PATH env variable. If not found, it will ask you to input where it can find the Qt bin folder where the qmake executable exists or you can bypass all of this by passing the -qt_dir option on it's command line. while running the install script, it will ask you to input 1 of 3 options: ***local machine*** - This option will install the built application onto the local machine without creating an installer. ***create installer*** - This option creates an installer that can be distributed to other machines for installation. The resulting installer is just a regular .py script file that the target machine can run if it has Python3 installed. Only Python3 needs to be installed and an internet connection is not required. ***exit*** - Cancel the installation. -local or -installer can be passed as command line options for install.py to explicitly select one of the above options without pausing for user input.