BerthaD is a simple, fast, no-nonsense TCP server to store blobs of data by its SHA256 hash with just three operations:
- PUT – Stores the data on disk and return its hash.
- LIST – Return the hashes of all blobs stored on this server.
- GET – Given the hash of a blob it returns the content of the blob.
- __GET__s are fast. They are implemented using Linux'
spliceand FreeBSD'ssendfilesyscall. - Small codebase.
- No authentication. No SSL. If you don't need them, they are only an overhead.
>>> from bertha import BerthaClient
>>> c = BerthaClient('localhost', 1234)
>>> list(c.list())
[]
>>> c.put_str("Example blob")
'a0869d836f643fae5d740ad4407c97e174d03169fd788fce690341d03f8d8f44'
>>> list(c.list())
['a0869d836f643fae5d740ad4407c97e174d03169fd788fce690341d03f8d8f44']
>>> c.get('a0869d836f643fae5d740ad4407c97e174d03169fd788fce690341d03f8d8f44').read()
'Example blob'See py-bertha.
$ cd release
$ ./build
Usage: berthad-vfs <bound host> <port> <data dir> <tmp dir>
bound hostis address or name of the address to be bound. For instance:localhostor0.0.0.0.portis the port on which to bind. Clients default to 819.data diris the directory which will contain the blobs. It must exist.tmp diris the directory which will contain the blobs while they are streamed to disk during a PUT. The directory must be on the same mounting point asdata dir.
The protocol is described in PROTOCOL.md.