Friday, February 7, 2014

Requirements

The Wheel of Time turns, and Ages come and pass, leaving memories that become legend. Legend fades to myth, and even myth is long forgotten when I have time to work in peerbackup again.


Enough said.


Let's suppose that a software capable of backing your documents up in a distributed and encrypted manner existed. What would be the requirements for such a program?

Backups and snapshots
You want your data copied. And you want to be able to return to any point in the past. You should be presented with a list of changes made through time and be able to chose any point in that history. Either at the whole of your data, a branch in your directory tree or a file.
If your whole disk crashes you want to recover all the data and the history of changes.
You must be able to restore data in an alternative location so you won't overwrite existing versions.

Peer to peer and encryption
Data and metadata must be encrypted, accesible only to the person who owns it. It must be distributed in order to achieve greater protection against hardware failures, just like RAID does.
Also, you want to chose your peers. You want to trust only in people you really trust. Not because they would try to access your data (remember it's encrypted), but because you can phone them if their node is down. Also, you want to benefit from deduplication.
You could create one group with your family (lots of photographs would benefit from deduplication) and join a different one with your friends. Every group can define a salt phrase and every directory can be assigned to a group. 
You must be able to add people to a group in a similar way to bittorrent sync.

Interface and communication
The program must run as a daemon in order to maintain communication with other nodes, and must be able to communicate with different interfaces. Via web, command line or a native program. A simple protocol must be defined and used.

At least now I know what I want to create. Following posts would describe in greater detail every topic of this post. No coding until key requirements are set.

No comments:

Post a Comment