Rakoshare is a sharing tool to synchronize a folder on multiple computers with no configuration.
It was inspired by Bittorrent Sync and aims to be an Open Source alternative. Internally it reuses the Bittorrent protocol to build a more dynamic protocol.
Rakoshare is forked off of Taipei-Torrent, a pure go Bittorrent application.
Working but unstable. Anything, both in the implementation or the protocol, can change at any time (although the general idea should remain the same)
Rakoshare might currently eat your data if you're not cautious.
Tested on Linux.
- On-the-fly encryption with spiped
- Capabilities on the model of Tahoe-LAFS
- ReadWrite capability
- Read capability
- Store capability (ie keep data on disk without being able to read it)
-
Encryption
- Encryption of the data at-rest is desirable to send data to untrusted servers.
-
Speed
- Rakoshare is currently naive in how the folders are checked, there is room for improvement on this side
-
Download and install the Go tools from http://golang.org
-
Use the "go" command to download, install, and build the Rakoshare app:
go get github.com/rakoo/rakoshare
- Create a share session:
$ ./rakoshare gen -dir <somedir>
The result will be a list of different ids, each with a different capability:
WriteReadStore: AgpUdzGDo14K7hmkce3pLUXWq3nf1sJfXmmyzeN9vmrNpfRxwZUQjuvhPaZvnysJtB6K2M8tT6f1vvriTko2hP38
ReadStore: ovWviooStXvVpgY7Vrd2FryM8pwDHNL9TyUWdsxAUBUv
Store: 2CSNWUTbN9arXsF37Eu9HmYbUeD5VukpRsgQnCwRAnMyg
It will also create a session file in your ~/.local/share/rakoshare folder. You shouldn't need to look at it.
- Start sharing content:
$ ./rakoshare share -id <one of the previous id>
If you use the WriteReadStore id, any change you make will be propagated. If you use the ReadStore id, no local changes will be propagated. The Store id currently works as a ReadStore id.
Send an Id to someone else, and start sharing !
- If you receive content from someone else, start receiving and sharing content:
$ ./rakoshare share -id <the id you received> -dir <where to store data>
For more info:
rakoshare help
I'm fetching a slew of pics from /r/EarthPorn with redditEarthPorn that are then shared with a rakoshare instance that I run on my server. Use id evK5HghADU2GrgM2NWFyKsRUj4ymkhoagz9DXgpW6EcN to receive a bunch of gorgeous images, courtesy of reddit users ! The folder is updated approximately every hour, and I will do my best to cap the size of the folder to a reasonable amount (expect ~ 70 MB).
To test locally:
$ ./rakoshare share -id evK5HghADU2GrgM2NWFyKsRUj4ymkhoagz9DXgpW6EcN -dir /some/dir/
Note that this id is read-only, meaning you can't modify what is shared by everyone.
http://code.google.com/p/bencode-go - Bencode encoder/decoder
https://github.com/zeebo/bencode - Another Bencode encoder/decoder
http://code.google.com/p/go-nat-pmp - NAT-PMP firewall client
https://github.com/hailiang/gosocks - SOCKS5 proxy support
https://github.com/nictuku/dht - Distributed Hash Table
https://github.com/nictuku/nettools - Network utilities
https://github.com/dchest/spipe - pure-go spiped implementation
https://github.com/codegangsta/cli - CLI application builder package
https://github.com/jackpal/Taipei-Torrent is the base of rakoshare
Please open issues on the github tracker (https://github.com/rakoo/rakoshare/issues), or discuss over the mailing list: rakoshare served-by googlegroups.com