Distributed backup / file mirroring tool
npm install backerwip distributed backup / file mirroring tool

Mirror your files between all your computers and servers, so when a harddrive breaks or a computer gets stolen
you don't lose anything.
Like bittorrent sync, but open source and in node.js,
so it runs on SmartOS too.
Like dropbox, but stores your data only on _your_ machines.
No third party - except possibly internet providers - involved.
* revisions
* webgui
* public sharing
* collaborative live editing? maybe just using the file system limits too much
The filesystem is represented as a merkle tree, so backer can efficiently figure out what files changed.
On connection sync using merkle trees, then maybe use scuttlebutt
and only send file diffs.
Problem: efficient tree diffing
Since backer is only used for transferring data and never stores it on any server/computer but the user's,
only transfor needs to be encrypted.
Encrypting your own harddrive is out of scope and there's plenty of tools that do this,
one popular being truecrypt.
* Maybe public/private key cryptography?
For maximum composability the transport part of the api will just be a duplex
stream that is to be piped to another backer's duplex stream. This way it
works over tcp, websockets, in memory, or over any another network or
streaming interface.
``js`
var a = backer(__dirname + '/a').createStream();
var b = backer(__dirname + '/b').createStream();
a.pipe(b).pipe(a);
Over tcp it would look like this:
`js
// computer A
var backer = require('backer');
var back = backer(__dirname);
net.createServer(function(con) {
con.pipe(back.createStream()).pipe(con);
}).listen(PORT);
// computer B
var backer = require('backer');
var reconnect = require('reconnect');
var back = backer(__dirname);
reconnect(function(con) {
con.pipe(back.createStream()).pipe(con);
}).listen(PORT);
``
There will be events emitted on the backer instance, which can then for
example be fed to a web frontend.
* scuttlebutt
* btsync
* dht
* delta encoding
* merkle tree
* nodedrop (failed but tried the same)
* Build your own private, encrypted, open-source Dropbox-esque sync folder
* unison research papers (11)
* dominictarr/merkle
* roderwang/node-webkit
* shama/nodewebkit (npm installer)
* maxogden
* hughsk
* dominictarr
* rvagg
* StarBurst1977
* joelcipriano
* silvinci
* minuteman3
* you?
There's a lot still to be figured out, so if you either _are_ a mad scientist that juggles chainsaws while writing
distributed systems, or want to be _come one_, this is the right place for you!
Plus, there's going to be need for designs, blog posts, a public facing website, etc.!
MIT