Skip to content

Instantly share code, notes, and snippets.

@mafintosh
Created April 10, 2014 23:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mafintosh/10432603 to your computer and use it in GitHub Desktop.
Save mafintosh/10432603 to your computer and use it in GitHub Desktop.
var fbackup = require('folder-backup')
var request = require('request')
module.exports = function(dat, remote, cb) {
copyMeta(dat, remote, function(err, backend) {
if (err) return cb(err, err.message)
if (backend === 'leveldown-hyper') hyperClone(dat, remote, cb)
else normalClone(dat, remote, cb)
})
}
function normalClone(dat, remote, cb) {
dat._storage({ path: dat.paths().level }, function(err, seq) {
if (err) return cb(err, err.message)
dat.pull(remote, cb)
})
}
function hyperClone(dat, remote, cb) {
var opts = {
showProgress: true,
path: dat.paths().level
}
fbackup.clone(remote + '/_archive', opts, cb)
}
function copyMeta(dat, remote, cb) {
request({json: true, uri: remote + '/_package'}, function(err, resp, json) {
var backend = json.backend // save for later
delete json.backend
if (err) return cb(err, err.message)
dat.meta.write(json, function(err) {
if (err) return cb(err, err.message)
dat.meta.json = json
cb(null, backend) // forward it
})
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment