It is once again time to shake the world from its very foundations with my latest creation. I present to you… omnisync.
omnisync is a file synchroniser (something like rsync), only it’s not built to synchronise just files, but also anything else. It’s extensible through a simple plugin architecture, and you can have it synchronise anything to anything within a few hours.
Apart from the usual file, sftp, s3 etc support (yes, you can synchronise a directory on s3 to a remote sftp server), you can write support for anything you like. Would you like to synchronise a database to another, or to dump it to files and restore it later? You can just write an omnisync plugin that will talk to the DB and represent its tables as files, and omnisync will take care of everything else for you.
After writing this, all you’d need to do to dump your db is run
omnisync, for example, like this: omnisync mydb://user:pass
mydb.host/
/home/user/dbdump@ and omnisync would dump all the tables to files. To
restore, just swap the arguments around. You can also mirror the first
database to the second by passing two databases as arguments.
You could copy anything anywhere with this scheme. You can, for example, write a simple HTTP reader that downloads webpages and scans their links as files and pass it to omnisync, which would then act as a spider, downloading all files from a website and storing it anywhere else you wanted.
I hope this is useful to you, the first alpha is already out with file, virtual fs, sftp and (read-only) s3 support, you can get it here.
NOTE: Since this is an alpha, please don’t use it on any important data!