File syncing is the one service I can’t do without, and I critically evaluate whatever tool handles my syncing. Over the years, I have used several, but I keep going back to Unison, one of the first syncing tools I ever tried. Unison delivers syncing in ways that even newer apps don’t. It doesn’t have the polish of tools like Syncthing, but it still works like a charm. Unison is not dramatic. Once you sync, everything is up-to-date without delays from cloud routing, queuing, or third-party uploads.
- OS
-
MacOS, Windows, Linux
- Price model
-
Free
Unison is a cross-platform, open-source file synchronization tool. It supports two-way file syncing and directories across different hosts or storage locations.
My laptop and desktop now just agree on everything
Without either of them ever uploading a single file
I used the cloud — mainly Google Drive and Dropbox — to keep files on multiple devices. In fact, at one point, I figured out all the hacks for taming OneDrive so that it synced just how I needed it. But despite my best efforts, file availability was sometimes a problem, and if my network was slow, syncing resulted in a very long wait period.
With Unison, I set up identical folders on my laptop and desktop, and the sync was almost instant. I got the message that everything was up-to-date, and it was so fast it felt like it completely skipped scanning, uploading, and verifying.
It’s only when you understand how Unison works under the hood that its speed makes sense. It compares two replicas of the same directory and keeps track of their state. When you run it for the first time, it records the state of the directories, and afterward, it concerns itself only with the parts that have changed. So it’s comparing lightweight archive records rather than rereading and reuploading every file.
The tool syncs effortlessly. Using its CLI version eliminates a progress bar or dashboards that visualize the activity, and if nothing has changed in the directories, it quietly exits.
The whole process avoids uploading any data to a server. Instead of a server, devices talk directly to each other over SSH or via local sync. When I switch from my laptop to my desktop, I run Unison, and it reconciles all my data. The files live locally on each machine.
Things only get interesting when files don’t match
Most tools pick a winner — this one makes you part of the decision
Syncing tools will generally work well when files are identical. So, I introduced conflicts and asymmetry between the two folders by editing the same sync folder on both of my devices. On my desktop, I deleted a file, while on my laptop, I added a few extra files. When I ran Unison, I wasn’t sure what to expect, but the tool took the safest route, showing me what had changed and allowing me to decide what should be done.
This is a significant difference between Unison and most syncing tools I’ve used. They often try to be invisible to the point of making significant decisions for you. This causes overwrites that do not represent what works best for you or duplicates that make your data structure messy and confusing. Once files are edited in two different ways, Unison flags them as conflicts and gives control over key actions back to you.
This kind of control builds trust in tools. I’m never wondering if I have the best version of my files because I make the final decision. Below is how Unison acts in some common scenarios.
|
Situation |
What Unison does |
Why it matters |
|---|---|---|
|
Non-identical edit on both devices |
Flags a conflict |
You decide which version to keep |
|
Delete on one side |
Prompts before syncing |
No accidental data loss |
|
Add new files |
Recommends propagating, waits for confirmation |
No duplicates or confusion |
Unison shows you what needs your attention. Even when changes aren’t conflicting, it tells you what it plans to do before it does anything.
It scaled to all my devices without needing a “main” service
One simple pattern made everything stay in sync
Unison worked well syncing between two devices. That begged the question: what about three or four? The design works great for pairs of replicas. However, scaling is easy once you have the right patterns.
A simple hub-and-spoke setup turned out to be the most reliable scaling architecture. My desktop is my hub, with other devices syncing individually to it. This design eliminates a clustered web where every device may be synced to every other device.
In practice, here’s what it means:
- I sync my laptop with my desktop before switching devices.
- Any changes I make get reflected back through the hub.
- All devices eventually converge on the same state.
The hub is simply another machine, and the entire setup doesn’t require a central server to coordinate it. I stick to running Unison manually even though it has a repeat mode that automatically monitors changes. Doing it manually only takes a few seconds and allows me to know when reconciliation occurs. This is a system that doesn’t require a NAS setup, a rented server, or trust in any external service.
I almost gave up during setup — and that’s the trade-off
Unison is not the most polished syncing tool, and it shows during setup. If you use the command-line version, you have to be comfortable with paths and directories, and you should understand SSH if you’re syncing across machines.
That aside, it doesn’t simply replace my other sync tools and setup; it introduces a new perspective on what syncing can be. My files do not have to pass through a service.
Differences Between Syncing and Backing Up Data You Must Know
Only one is a true safety net.