ClearSkies – open-source file syncing without cloud
github.com
github.com
Create a Dockerfile:
# Ubuntu 12.04 + Python + Git
FROM nlothian/python-git
# Ruby
RUN apt-get -y install libgnutls26 ruby1.9.1
RUN apt-get -y install ruby1.9.1-dev
RUN gem install rb-inotify ffi
RUN git clone https://github.com/jewel/clearskies
Build: sudo docker build -t clearskies .
Run: sudo docker run -i -t clearskies /bin/bash
Then: mkdir /testdir
echo 'testing' > afile
cd /clearskies
./clearskies start
./clearskies share /testdir
That will print something out in the form: clearskies:SYNCXXXXXXXXXXXXXXXXXXXXXXXX
Note this, then start another clearskies docker container.In that one:
mkdir /testdir
cd /clearskies
./clearskies start
./clearskies attach clearskies:SYNCXXXXXXXXXXXXXXXXX /sharedir
Wait a few seconds, and your file should appear.There do seem to be problems with some firewall scenarios (or at least I presume that is what it is..)
When I setup a node at home and one on an Azure box I see them discover each other, but no files seem to get copied.
BitTorrent Sync only supports untrusted peers via API [2], and the only other open-source BitTorrent Sync alternative that I am aware of [3] left it out completely.
[1] https://github.com/jewel/clearskies/blob/master/protocol/unt...
But apart from speed and redundancy, I also hope for economy of scale. If there were a small market where several hosters offer peered hosts with X GB for $Y/month, it could drive costs down for everyone. Dropbox is asking for $0.10/GB/mon, which is about twice as high as it could be if the market were efficient.
I'm currently working on a minor reorganization of the protocol in the protocol_cleanup branch. I'll see if I can fold untrusted mode back into the core protocol.
I see that there is some 'tracker' code in the repo:https://github.com/jewel/clearskies/tree/master/tracker
Must I run that somewhere that both computers can access, and tell them its address?
https://github.com/jewel/clearskies/blob/master/protocol/cor...
I can't find any references to DHT in the code (but the protocol lists that as an extension).
For lan udp broadcast:
https://github.com/jewel/clearskies/blob/master/lib/broadcas...
For tracker client (apparently gets a list of tracker URIs from the config):
https://github.com/jewel/clearskies/blob/master/lib/tracker_...
The plan is to add DHT support similar to the DHT used by BitTorrent. We'll seed the DHT using the tracker.
If you want you can also run your own tracker. You should also be able to add peers manually by IP address and port, but that ability is missing from the ruby client.
Brad Fitzpatrick is one of the creators (LiveJournal, memcache, etc.) and it's rapidly getting better and better. That said, it can still be a bit tricky to get everything set up.
Just sharing stuff between 2 PCs was very difficult (or I couldn't figure it out) and the annex program sat at 100% CPU most of the time doing nothing. Being written in Haskell is a turn off too. If I have to fix something, I want C, python, etc, not this crazy write-only language :-)
I recall my problem was trying to understand how to sync files I already had in other directories. Things certainly were not sync'd automatically. In the walkthrough it says you need to git-add files and then git-commit them http://git-annex.branchable.com/walkthrough/#index3h2
The ~/annex/ directory ended up with symlinks to git objects and the files themselves are nowhere to be found. I didn't know where things were/weren't sync'd already. Nothing sync'd across and the assistant just said "all done" or something similar. At one point I remeber it just containing a bunch of broken symlinks. Good job I was just testing it out, imagine if it replaced my actual files with broken symlinks.
What all this boils down to is that git-annex is not as fool-proof as the proprietary solutions claim to be and something equally Free as g-a, but less complicated, would be great.
The Jabber plugin doesn't work so it wasn't distributed like btsync. I had a central "server". What this mean is if computer A kicked off a sync, a node wouldn't get updated right away. The "server" doesn't automatically push to all of the clients.
It worked ok, I've tried just about ever sync solution out there. btsync is the simplest "just works" that I've found. The only problem I've found with btsync is that sometimes the mobile apps appear to be offline. But once they are woke up they'll start syncing.
btsync isn't a backup solution though, so I have bakthat backing up to Amazon Glacier.
I see there's an "rdiff manifest" extension, which is cool for syncing later changes - but the initial manifest will have to be transferred some other way.
As an aside, I am currently adding a more sophisticated manifest exchange in the "protocol_cleanup" branch that will remove the need to keep sending the entire manifest (other than on the first connection).
How does ClearSkies compare to existing private cloud solutions?
I find that very, very bizarre. Can you explain your thinking?
What makes _your_ "I don't care about licensing, and neither should you" opinion not bizarre, and his "I don't care about projects with wrong license" bizarre?
I agree that parent comment didn't add much to the discussion, but that's not the reason to imply bizarreness of it.
If it's a project that interests or is useful to me, then personally that trumps the license. If I discover a project useful to my workflow then I'll find a way to work with it, despite the license.
> What makes _your_ "I don't care about licensing, and neither should you" opinion not bizarre
Because it's my opinion and I generally don't find my opinions bizarre, otherwise I wouldn't hold them.
And I didn't say "I don't care about licensing, and neither should you" or even insinuate that.
He's more than welcome to care more about a license over a usefulness of piece of software and I'll still find it odd.
GPL is rather limiting in how you can use the code. A large company (e.g. Apple) won't let something gpl be used heavily internally if they can help it since they won't be able to apply patches or modify it without releasing these changes ... this obligation adds significant legal burden and, furthermore, releasing the changes could reveal private details about the companies internals.
I don't think that the commentor's reason is a good one, but I can understand the viewpoint; GPLv3 is quite limiting for some uses.
they can use and patch GPL product internally as long as they want.
The C++ implementation is also LGPL.
IMHO such licences actually hold free software back.
https://groups.google.com/forum/#!msg/clearskies-dev/sTlXzBO...
For the sync app itself GPL would have worked great, but we want to have an easy-to-integrate sync library. Hopefully this will reduce the number of apps that require a cloud service to be able to synchronize the user data between devices.
The problem is portability to android and iOS. We additionally want to make the core easy to embed in other applications.