Did You Know?
Got a tip? Let us know

LFCS - Linux Foundation Certified SysAdmin - Exam Preparation Guide

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

Download Your Free eBooks NOW - 10 Free Linux eBooks for Administrators

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...
ravisaive@172.16.25.125'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.

I am a major in computer science, love to research nix. I love to write codes and scripts, review distros, experiment Foss Technologies, write technical articles, Hack, of course Ethically. I am working as System Administrator (nix) for a NGO.

Linux Services & Free WordPress Setup

Our post is simply ‘DIY’ aka ‘Do It Yourself, still you may find difficulties and want us to help you out. We offer wide range of Linux and Web Hosting Solutions at fair minimum rates. Please submit your orders by Clicking Here.

6 Responses

  1. scott says:

    I enjoy you articles.
    FYI
    GNU Public License

  2. abilash says:

    Thanks for this wonderful Tool…!

  3. Joe says:

    What does this offer over just rsync and a gui?

  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. 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?

Leave a Reply

This work is licensed under a (cc) BY-NC | TecMint uses cookies. By using our services, you comply to use of our cookies. More info: Privacy Policy.
© 2012-2014 All Rights Reserved.