Tinysync is a simplistic tool for synchronizing files between multiple computers. It will ensure that a given directory has the same content on all configured systems. Tinysync's primary design goal is to be small, lightweight, and not to require any additional software to accomplish this task.

Cloud storage is everywhere these days. Everybody and their mother uses Internet-based storage services for making important data available on all devices. Broadband Internet access voids the necessity to copy files between the laptop in the office, the PC at home, and the private laptop by using USB sticks. Unfortunately, public cloud storage offerings come at a price — even when they're free.

The basic principle of services such as Dropbox, Google Drive or Apple iCloud is to automatically upload one's important files to datacenters operated by profit-oriented companies anywhere in the world. Data is ultimately left outside of one's control: who can read, copy, and even modify the data becomes a question of trust to the company offering the service.

Private, self-hosted solutions can be an attractive alternative to this scenario. While there are many full-blown solutions out there already, most of them are feature-rich and yet complex. When it comes to making efficient use of system resources then it's worth considering lightweight alternatives. Furthermore, for the security-minded user, less complexity results in a much smaller attack surface.

Tinysync is a simplistic tool for synchronizing files between multiple computers. It will ensure that a given directory has the same content on all configured systems — not more and not less. Tinysync's primary design goal is to be small, lightweight, and not to require any additional software to accomplish this task.

The tool requires a central server to synchronize data with, but in fact does not require installation of any software on this machine. That server can be anything from a PC, a Raspberry Pi, to a virtual root server (VPS) hosted in a datacenter near you. The required software (ssh & rsync) is typically installed automatically as part of the base Linux image on that system.

What it is designed for

  • Tinysync is designed for a single user, working on different computers during different times of the day

What it is not designed for

  • Tinysync is not designed for a single user, working on different computers simultaneously
  • It is not designed for multiple users sharing files with each other

How it works

The following is a schematic example of a typical usage scenario:

  1. Computer A has Tinysync installed and it is able to connect with the server. Refer to the README for detailed installation instructions. The user now creates a new file on computer A. alt text
  2. Tinysync will upload (push) the new file to the server based on a timer, automatically whenever the directory changes (via inotify), or manually as initiated by the user. alt text
  3. Furthermore, Tinysync will continuously upload new versions to the server as the user keeps updating the file. Note that only changed parts of the file will be sent in order to minimize transfer times.
  4. At one point the user will log on to a different system, computer B in this example. Note that at this point computer A becomes inactive — the user works on computer B exclusively. alt text
  5. Tinysync will immediately download any new or changed files from the server. The user can continue working with the data as it was when leaving computer A. alt text
  6. As before, any changes are automatically synchronized with the server. Any new files created on computer B will be uploaded to the server, waiting there for computer A to connect again... alt text

A word of caution

Tinysync does not implement any logic for locking files or resolving conflicts. If files are modified on different clients simultaneously then some of these changes will get lost!

developerWorks