Unison – An Ultimate Local/Remote File Synchronization Tool for Linux

File Synchronization is the process of mirroring, files and data in two or more locations in accordance with certain protocols. Files and Data are the most valuable thing in this era of Information Technology. By File Synchronization, we ensure that one or more copies of our priceless data is always available in case of disaster of any kind or when we need to work in many locations.

A good File Synchronizer is supposed to have below listed Features:

  1. Cryptographic synchronisation, as a security Implementation.
  2. A good ratio data compression.
  3. A Perfect algorithm implementation to check data duplication.
  4. Keep track of file source change.
  5. Scheduled Synchronisation.

One such tool is Unison. Here in this article we will be discussing “Unison” in details, along with its features, functionality and a lot more.

What is Unison?

Unison is a cross platform file synchronization application which is useful in synchronizing data between two or more locations be it computers or storage device.

Features of Unison

  1. Released under General Public License (GPL)
  2. Open Source and Cross Platform Available for (Linux, Unix, BSD, Windows, Mac)
  3. Make available same version of file across different machine, regardless of last modified location.
  4. Cross Platform Synchronization possible i.e., a Windows machine can be synchronized over a *nix Server.
  5. Communicate over standard Protocol TCP/IP i.e., possible between any two machines over internet regardless of Geographical Location.
  6. Smart Management – Show conflict when a file has been modified on both source and show it to the user.
  7. Secured SSH Connection – An encrypted data transfer.
  8. rsync algorithm is deployed here, only the modified part is transferred and overwritten. Hence. it’s fast in execution and Maintenance.
  9. Robust in nature
  10. Written in “Objective Caml” programming Language.
  11. Matured and Stable, no active development required.
  12. It is a user-level program ie., Application don’t need superuser privileged.
  13. It is known for its clear and precise specification.

Installation of Unison in Linux

The current stable release (Unison-2.40.102) can be downloaded from the link below:

Download Unison 2.40.102 Stable

Alternatively, we can also download and Install “Unison”, if it is available in repo using apt or yum command as shown below.

On Debian/Ubuntu/Linux Mint

Open terminal using “Ctr+Alt+T” and run the following command on the terminal.

$ sudo apt-get install unison
On RHEL/CentOS/Fedora

First, enable EPEL repository and then install using the following command.

$ sudo yum install unison

NOTE: The above command will Install Unison without GUI. If you need to Install Unison with GUI support, install ‘unison-gtk‘ package (Only available for Debian based distros) using the below command.

# apt-get install unison-gtk

How to Use Unison

Unison is used to synchronize a set of files in a directory tree to another location with similar structure, which may be a local host or remote host.

Local File Synchronization

Let’s create 5 files under your Desktop and then synchronize it to a folder called ‘desk-back‘ in your home directory.

$ cd Desktop/
$ touch 1.txt 2.txt 3.txt 4.txt 5.txt
$ ls

1.txt 2.txt 3.txt 4.txt 5.txt
$ mkdir /home/server/desk-back

Now run the ‘unison‘ command to synchronize your Desktop files to under ‘desk-back‘ in your home directory.

$ unison /home/server/Desktop /home/server/desk-back/
Sample Output
Contacting server...
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
/home/server/Desktop
/home/server/desk-back
This can happen either
because this is the first time you have synchronized these roots,
or because you have upgraded Unison to a new version with a different
archive format.
Update detection may take a while on this run if the replicas are
large.
Unison will assume that the 'last synchronized state' of both replicas
was completely empty. This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations. See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.
Donations to the Unison project are gratefully accepted:
http://www.cis.upenn.edu/~bcpierce/unison
Press return to continue.[]
...
...
Saving synchronizer state
Synchronization complete at 13:52:15 (5 items transferred, 0 skipped, 0 failed)

Now check the location /home/server/desk-back, if the synchronization process was successful?

$ cd /home/server/desk-back/
$ ls

1.txt 2.txt 3.txt 4.txt 5.txt

Remote File Synchronization

For remote file synchronization, you must have same version of Unison installed on both local and remote server. Run the following command to verify that the local unison can start and connect to the remote unison server.

$ unison -testServer /home/ravisaive/Desktop/ ssh://172.16.25.125//home/ravisaive/Desktop/
Sample Output
Contacting server...
[email protected]'s password: 
Connected [//tecmint//home/ravisaive/Desktop -> //tecmint//home/ravisaive/Desktop]

The above results, indicates that the remote server is connected successfully, now sync the files using below command.

$ unison -batch /home/ravisaive/Desktop/ ssh://172.16.25.125//home/ravisaive/Desktop/

Executing GUI Unison

The first step is to set profile which requires you to set basic information as name of a profile and what you want to synchronize, source and Destination location, etc.

To start Unison GUI, run the following command on the terminal.

$ unison-gtk
Create New Unison Profile

Create New Profile

Enter Unison Profile Description

Enter Profile Description

Select Unison Synchronization Type

Select Sync Type

Select Sync Directories

Select Sync Directories

5elect Partition Type

5elect Partition Type

Unison Profile Created

New Profile Created

Select Created Profile

Select Created Profile

Unison Sync Message

Unison Sync Message

Once profile is created and source as well as destination is entered, we are welcomed with the below window.

Unison Flle Synchronization Process

File Synchronization Process

Just select all the files and click on OK. The files will start synchronising from both the directions, based upon last update time stamp.

Conclusion

Unison is a wonderful tool which makes it possible to have custom synchronisation either way (Bidirectional), available in GUI as well as command Line Utility. Unison provides what it promises. This tool is very easy to use and requires no extra effort. As a tester I was very much impressed with this application. It has a whole lot of features which can be implemented as required. For more information read unison-manual.

Read Also:

  1. Rsync (Remote Sync) of Files
  2. Rsnapshot (Rsync Based) File Synchronizer

That’s all for now. I’ll soon be here again with another interesting article. Till then stay tuned and connected to Tecmint. Don’t forget to provide us with your valuable feedback in our comment section.

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

16 Responses

  1. PhilT says:

    To further elaborate on Ulath’s answer, Unison provides 2-way synchronisation. With rsync you have a source and a destination. You can make the destination look like the source but not the other way round. Conflicts can occur if you made changes on both sides but Unison has a variety of ways of dealing with these. I have a central server with 3 client machines that all sync slightly different datasets but there are some overlaps and Unison handles it very well. I take this over RAID any day. Much more portable and reliable.

    • Avishek Kumar says:

      Thanks @PhiIT for such a nice explanation. I have quoted your comment at a few places where people were asking the difference between rsync and Unison.

      Keep connected!

  2. Ulath says:

    i am using this for years without any breakage, data loss, etc. it is a very efficient and professional tool.

    @joe: it tracks the changes on both sides, such that you know if a file was deleted on the one side or created on the other.

  3. Andrei says:

    Hello
    I need to install unison on CentOS 7. I installed EPEL, it is enabled but it doesn’t find unison in the repo.
    I also looked at the repo content here:
    http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/

    But there is no unison package. Perhaps it wasn’t compiled yet for CentOS 7?

  4. Daniel Noberto says:

    Hi Avishek.
    How are you friend?
    I read your article about Unison.
    If I understood, the Unison do the same that rsync. So, my question is, what the advantage of the Unison about Rsync?

    Regards
    Daniel Noberto

  5. Joe says:

    What does this offer over just rsync and a gui?

  6. abilash says:

    Thanks for this wonderful Tool…!

  7. scott says:

    I enjoy you articles.
    FYI
    GNU Public License

Leave a Reply to Ravi Saive Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.