node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

hyperlog-sneakernet-replicator

hyperlog-sneakernet-replicator

Peer to peer replication for a hyperlog using files you can send around on a USB stick

Default hyperlog replication uses a Level database. LevelDOWN is the default backend on the filesystem, and it reads/writes many different files to the filesystem in order to function.

However, USB sticks have different write properties than what you'd find in a laptop, and can be pulled from the system at any time.

hyperlog-sneakernet-replicator stores the entire Level DB as a single tar.gz file, using a temp directory on the local FS to perform the actual replication with a hyperlog.

For further safety, opts.safetyFile can be set to true to only clobber the previous gzipped tarball once the new one has been copied to the media alongside it.

example

var replicate = require('hyperlog-sneakernet-replicator')
var level = require('level')
var hyperlog = require('hyperlog')
 
var db = level('log.db')
var log = hyperlog(db, { valueEncoding: 'json' })
 
replicate(log, '/media/usb/log.tgz')

api

var replicator = require('hyperlog-sneakernet-replicator')

replicator(log, [opts={}], outFile, cb)

Performs replication between the hyperlog log and the tar.gz file located at outFile. If no file exists at outFile then a brand new hyperlog database will be created there and replicated to.

cb is a callback function of the form function (err) {}, and is called upon an error, or completion.

opts is optional. If opts.safetyFile is set, the final tar.gz output will be written to the media as e.g. log.tgz-123895141 in full before clobbering the real outFile.

install

With npm installed, run

$ npm install hyperlog-sneakernet-replicator

license

BSD