is one of the most exciting things I've seen in a while. It
allows syncing of folders across multiple computers, using bittorrent
Think of it as a private, secure, free, more portable,
unlimited, and customizable replacement for Dropbox.
Reasons to be excited about this:
Nobody (such as Dropbox) is the man-in the middle, with the ability to look
at (and accidentally expose) all your data.
Transfers are faster, because they don't have to go through a middleman.
Every computer that shares the folder is a node in a private torrent network --
the more computers you have the more copies (and performance) you have.
All data transfers are encrypted. In addition, there is nothing to sign up
for, no accounts, no nothing. Just download, configure, and run.
Because the executable is just downloaded and executed, there's nothing to
install, which means no root access is required, which means it can be
run in all kinds of environments.
Linux, Mac, and Windows are supported.
No size limits, except the size of your hard drive. No price per gigabyte.
No limit to how many directories or files can be shared.
No limit to how many source drives or partitions you can sync.
Services like Carbonite charge more to sync external drives.
Share folders in read-only mode with others.
This just covers Linux command-line coverage, both because Mac & Windows have
a GUI tool, and because it's probably (mildly) more difficult than the others.
Yay! Config is just a simple JSON file.
Get a secret!
Run the following command to get a key. You can make as many of these as you
want and replace them whenever you want. You will need one per folder you
want to share:
Make a Config File
Generate a default to modify:
./btsync --dump-sample-config > ~/.btsync
Modify the Config File
This is very simple because the default config file has lots of comments
that explain everything. I'll go over a few options here. The most important
rule is that the file must be a valid JSON file. So when you're done, load
it up in your favorite JSON tool to check it. This also means you'll have to
remove all the built-in comments -- they're not in valid JSON syntax...
Leave at zero to select random port.
Set to a real port number (higher than 1023) and open that port in your
router for best performance and discoverability.
Universal Plug & Play is evil. Disable it. If you're security-conscious,
it's already disabled in your router.
Delete the "listen" line entirely to disable the browser interface
This is a list of JSON objects, one for each shared folder. For Python
users, the objects are basically dictionaries. For everyone else, they're
basically hash maps.
If you opened a port in your router, you can set that machine in the
known_hosts section below, so set this to false.
If you leave it set to true then btsync will use bittorrent's servers
to direct your traffic, adding a middleman. You're data will be
encrypted, but all your transfers will go through them, slowing things
down and adding a dependency.
If you don't want to open a port or use bittorrent's servers, you can set
up your own bittorrent tracker.
If all the machines you want to sync are on the same LAN, then you don't
have to open up a port or use a tracker or relay server.
If you did open a port on one machine, then add it to the config file
for all other machines. They will each find that machine, and will
then be informed about one another.
You do not need to add anything here for the "main" machine -- others
will find it.
Here are a few of the ideas I've had so far:
- Replace Dropbox
- Install on all your servers to share common data.
- Use to share data between VMs and your primary desktop.
- Share funny Reddit photos with your spouse.
- Share kid pics with your family.
- Use with read-only mode to keep a local copy of backups, logs, and other
important items from your production server.