git-annex. Definitely worth a look or two. In principle, it's something like a manually operated Dropbox - you can link folders with other folders and define sync relationships. But you can also define redundancies, ensuring that there are enough copies of files - if you delete a file, you get a warning if it was the last copy (and it is restored). Many commands for efficient management of various scenarios are added, and there are various backends for the data - for example, you can integrate Amazon S3 and include it as a backup repository with suitable means, or reference URLs from the web and make files always reconstructable (with this you can also integrate your own file server with an http interface). Or even use something like Google Mail as a backend and store your data in file attachments. Or use all the means of git to exclude temporary results of synchronizations, for example. Unlike Sparkleshare - which is also based on git - only the metadata is versioned in git here, not the files themselves. This of course has the disadvantage that file changes cannot be undone via it - for this you would need a versioning backend such as bup, which is then used as a data backup with versioning and definition of backup cycles. The advantage of the git-annex method, however, is that the data does not grow as gigantic as with Sparkleshare if you want to sync large files such as videos or digital images - only at the defined backup interface would the versions occur and you can explicitly determine which data goes there. Not for mouse pushers, but great for command line fetishists.