| Crates.io | h2kv |
| lib.rs | h2kv |
| version | 0.2.0 |
| created_at | 2025-09-16 15:56:58.711839+00 |
| updated_at | 2025-09-26 17:06:07.198405+00 |
| description | HTTP/2 interface for key-value storage systems |
| homepage | |
| repository | https://github.com/guapodero/h2kv |
| max_upload_size | |
| id | 1841972 |
| size | 73,616 |
A simple object storage system. Provides an unopinionated HTTP/2 interface for LevelDB based on features described in public RFCs.
This project is a work in progress, with additional releases planned in the near future.
This project is possible thanks to the authors of the leveldb-rs-binding crate.
cargo install h2kv# only file sync storage keys ending with .html
export H2KV_IGNORE="**/* !/**/*.html"
export RUST_LOG=h2kv=warn
h2kv \
--storage-dir /tmp --port 8080 --sync-dir . \
--daemon --pidfile /tmp/h2kv.pid --log-filename /var/log/h2kv.log
# re-sync when src directory changes
PID="$(cat /tmp/h2kv.pid)"
watchexec --watch src kill -HUP $PID
USAGE:
h2kv [--version] [--storage-dir STRING] [--port i32] [--sync-dir STRING] [--sync-write] [--daemon] [--pidfile STRING] [--log-filename STRING]
[--version] print the package version and exit
[--storage-dir STRING] directory to use for storage engine files
[--port i32] listening port for TCP connections, default: 5928
[--sync-dir STRING] directory to sync with the database on start and SIGHUP
[--sync-write] write to the synchronized directory on exit and SIGHUP
[--daemon] fork into background process
[--pidfile STRING] PID file, ignored unless --daemon is set
[--log-filename STRING] file to send log messages, ignored unless --daemon is set
Environment Variables:
H2KV_IGNORE:
Used with --sync-dir option to filter which files are synchronized.
Format:
String of glob patterns separated by spaces or newline characters.
Comments allowed between '#' and end of line.
Patterns starting with '!' are treated as exceptions (whitelist).
Pattern syntax: https://docs.rs/glob/latest/glob/struct.Pattern.html
NOTE: Syntax is similar to .gitignore but not identical.
Example: "* !/*.html !/static/**/*"
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See CONTRIBUTING.md.