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.

Hey TecMint readers,

Exciting news! Every month, our top blog commenters will have the chance to win fantastic rewards, like free Linux eBooks such as RHCE, RHCSA, LFCS, Learn Linux, and Awk, each worth $20!

Learn more about the contest and stand a chance to win by sharing your thoughts below!

Avishek
A Passionate GNU/Linux Enthusiast and Software Developer with over a decade in the field of Linux and Open Source technologies.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

16 Comments

Leave a Reply
  1. 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.

    Reply
    • 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!

      Reply
  2. 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.

    Reply
  3. 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

    Reply

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.