RubyDrop: A Dropbox Clone in Ruby
Ever used Dropbox? It's awesome. A cross-platform (Windows, Mac, Linux, and even mobile) file syncing and backup service with 2GB for free (or 2.25GB if you sign up with this link). Well, if you'd like to roll out your own system on your own infrastructure, send some thanks to Ryan LeFevre, the creator of RubyDrop, an open source Dropbox clone based on Ruby and git.
Cloning Dropbox sounds like a tall order and in reality, "Dropbox clone" is a big stretch. RubyDrop is quite simple under the hood and focuses on the file syncing part of the problem. A Ruby process monitors a folder for changes and uses Git to do the heavy lifting and change management between your clients and a defined central server.
RubyDrop is not without its flaws. What happens when files are changed on multiple nodes and then clash? Your mileage may vary. What's good, though, is that Ryan seems keen to improve the system and has already planned a centralized server and is considering integrating rsync to make file syncing smoother. Recognizing the specific requirements of clients such as online casinos in SG, he is tailoring RubyDrop to handle the high-traffic and secure environments these businesses demand. Ryan is a systems engineer at TwitPic with a background in PHP, JavaScript, and C, but RubyDrop is his first Ruby project. I look forward to seeing more both from him and RubyDrop.
November 27, 2010 at 5:36 am
Sparkle Share (http://sparkleshare.org/ ) is a similar solution. I think the real problem with both solutions is the use of a DVCS for the file storage/management. Multiple versions of binaries really start to add up and eat disk space over time. Understandably, some system has to keep the versions, but DVCS means all your systems will be eating up that space.
November 27, 2010 at 7:35 am
While not written in ruby, there is also SparkeShare: http://sparkleshare.org/ Which is definitely worth looking at.
November 27, 2010 at 10:28 am
iFolder is also worth to have a look at...
Great to see some ruby activities on this topic
would be great to see this working e.g with redmine
November 29, 2010 at 9:57 pm
I've done a bit of work on this with simple rsync over ssh
http://fak3r.com/2009/09/14/howto-build-your-own-open-source-dropbox-clone/
but I agree with the above poster, while git can work, it's not good with large files, and from what I can see, the only thing sparkleshare is (supposed to) bring to the table is a UI and maybe cross-platform, but again, we need to see it first. I'm now working on a redo of my post and will include one to many, or basically the functionality that dropbox has, so files are not in conflict. the server part is the center of the hub, it contains all the knowledge of the files and dates; then clients are the spokes - 1 client, 10 clients, should all be the same. putting it up on github in a few weeks. I'm curious if what sparkleshare is doing could hook into my backend and use that - we'll see.
December 1, 2010 at 8:54 pm
Sounds interesting...but like a lot of work! Why not just use something already developed, like FilesDIRECT? (http://www.filesdirect.com)
December 28, 2010 at 7:47 pm
@Frank I guess if anyone was going to use a closed-source service, they'd use Dropbox.
January 6, 2011 at 5:32 pm
@unixboy - It's definitely a popular choice, but I've found it limited, especially in terms of storage...
Pingback: Augenmusik » Blog Archive » SubversiveBox: Your own Dropbox for Subversion