Unison (software)

Last updated
Unison
Developer(s) Benjamin Pierce and contributors
Initial release1998;26 years ago (1998) [1]
Stable release
2.53.4 [2] / 19 February 2024;55 days ago (19 February 2024)
Repository
Written in OCaml
Operating system Linux, macOS, Windows
Type Synchronization
License GPLv3
Website github.com/bcpierce00/unison

Unison is a file synchronization tool for Windows and various Unix-like systems (including macOS and Linux). [3] It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other. [4] [5] [6] [7] Syncing replicas directly Unison is independent of third-party providers.

Contents

Features

Features of Unison include to handle file changes on both sides of replication; conflicts (same file changed on both sides) are displayed and can be resolved manually, optionally creating backups of changed files. Unison allows synchronization via computer networks (LAN, Internet) by direct connection (socket) or tunneled via ssh. [8] By using the rsync algorithm only changed blocks of files have to be transferred, thus saving bandwidth.

Use

Unison can be called via the command line with parameters or controlled via profile files. [9] [10] It can be executed interactively or batch-controlled automatically. In batch mode, unique changes are automatically synchronized. Files with replication conflicts are skipped.

After startup, Unison checks the file inventory per directory or computer and compares the timestamps of the files. If it detects changes, the changes to the corresponding files are analyzed in more detail. Afterwards Unison creates a replication list with suggestions for their synchronization and marks conflicts that cannot be resolved automatically.

GTK+ GUI Unison Screenshot.png
GTK+ GUI

GUI versions of Unison exist for interactive use. Under Windows and Linux they are generally based on GTK+. The GUI versions allow an easier overview of the replicas and the proposed synchronization. Changes can be marked individually by keyboard or mouse and then implemented in bundles.

Advantages and disadvantages, comparison with other open-source software

Compared to rsync, Unison is fully bi-directional and allows the user to detect and reconcile conflicts when both copies of a file have been changed since the last synchronization.

Before version 2.52, a frequent hassle for users was that both computers needed to run the same version of Unison, compiled with the same version of the OCaml libraries. [11] This creates problems, since, e.g., Debian Linux's APT system will not provide the ability to install an arbitrarily chosen version of the software or one compiled with any desired version of the OCaml libraries, if that is what is required by a second machine running a different operating system or packaging system. This was solved in version 2.52: both client and server can run different versions of Unison, compiled with different OCaml versions, as long as both sides are running at least version 2.52. If one end is running version 2.48 or 2.51, the other end may run any version from 2.52 but the OCaml version must match. [12]

Unison differs from Syncthing in several ways, the main one being that Syncthing is designed for always-on, automated synchronization, whereas Unison is designed for synchronization that is triggered and monitored by the user. Syncthing is peer-to-peer, while Unison is not.

See also

Related Research Articles

<span class="mw-page-title-main">Package manager</span> Software tools for handling software packages

A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.

Coda is a distributed file system developed as a research project at Carnegie Mellon University since 1987 under the direction of Mahadev Satyanarayanan. It descended directly from an older version of Andrew File System (AFS-2) and offers many similar features. The InterMezzo file system was inspired by Coda.

rsync File synchronization protocol and software

rsync is a utility for transferring and synchronizing files between a computer and a storage drive and across networked computers by comparing the modification times and sizes of files. It is commonly found on Unix-like operating systems and is under the GPL-3.0-or-later license.

MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs.

File synchronization in computing is the process of ensuring that computer files in two or more locations are updated via certain rules.

In software development, distributed version control is a form of version control in which the complete codebase, including its full history, is mirrored on every developer's computer. Compared to centralized version control, this enables automatic management branching and merging, speeds up most operations, improves the ability to work offline, and does not rely on a single location for backups. Git, the world's most popular version control system, is a distributed version control system.

<span class="mw-page-title-main">BackupPC</span>

BackupPC is a free disk-to-disk backup software suite with a web-based frontend. The cross-platform server will run on any Linux, Solaris, or UNIX-based server. No client is necessary, as the server is itself a client for several protocols that are handled by other services native to the client OS. In 2007, BackupPC was mentioned as one of the three most well known open-source backup software, even though it is one of the tools that are "so amazing, but unfortunately, if no one ever talks about them, many folks never hear of them".

<span class="mw-page-title-main">SugarSync</span> Online backup service

SugarSync is a cloud service that enables active synchronization of files across computers and other devices for file backup, access, syncing, and sharing from a variety of operating systems, such as Android, iOS, Mac OS X, and Windows devices. For Linux, only a discontinued unofficial third-party client is available.

Microsoft Sync Framework is a data synchronization platform from Microsoft that can be used to synchronize data across multiple data stores. Sync Framework includes a transport-agnostic architecture, into which data store-specific synchronization providers, modelled on the ADO.NET data provider API, can be plugged in. Sync Framework can be used for offline access to data, by working against a cached set of data and submitting the changes to a master database in a batch, as well as to synchronize changes to a data source across all consumers and peer-to-peer synchronization of multiple data sources. Sync Framework features built-in capabilities for conflict detection – whether data to be changed has already been updated – and can flag them for manual inspection or use defined policies to try to resolve the conflict. Sync Services includes an embedded SQL Server Compact database to store metadata about the synchronization relationships as well as about each sync attempt. The Sync Framework API is surfaced both in managed code, for use with .NET Framework applications, as well as unmanaged code, for use with COM applications. It was scheduled to ship with Visual Studio 2008 in late November 2007.

<span class="mw-page-title-main">Grsync</span> Graphical user interface

Grsync is a graphical user interface for rsync. rsync is a differential backup and file synchronization tool widely used in Unix-like operating systems.

<span class="mw-page-title-main">FlyBack</span> Open-source backup utility for Linux

FlyBack is an open-source backup utility for Linux based on Git and modeled loosely after Apple's Time Machine.

cwRsync is an implementation of rsync for Windows. Rsync uses a file transfer technology specified by the rsync algorithm, transferring only changed chunks of files over the network. cwRsync can be used for remote file backup and synchronization from/to Windows systems. cwRsync contains Cygwin DLLs and a compiled version of rsync on Cygwin. A client GUI is also provided as of the version 5.0.0.

<span class="mw-page-title-main">DirSync Pro</span> Computer file synchronization software

DirSync Pro is an open-source file synchronization and backup utility for Windows, Linux and macOS. DirSync Pro is based on the program Directory Synchronize (DirSync), which was first released in February 2003 by Elias Gerber. He subsequently developed it with Frank Gerbig and T. Groetzner. DirSync Pro was released by O. Givi in July 2008, based on a branch of the DirSync code. Many parts of DirSync Pro have gone through major rewriting and redesign ever since.

<span class="mw-page-title-main">Ubuntu One</span> Cloud service operated by Canonical Ltd.

Ubuntu One is an OpenID-based single sign-on service operated by Canonical Ltd. to allow users to log onto many Canonical-owned Web sites. Until April 2014, Ubuntu One was also a file hosting service and music store that allowed users to store data "in the cloud".

Syncovery is backup and file synchronization software that allows backing up and synchronizing files to the same or different drives, to different media, or to a remote server.

<span class="mw-page-title-main">GoodSync</span> Backup and file synchronization program

GoodSync is a backup and file synchronization program. It is used for synchronizing files between two directories, either on one computer, or between a computer and another storage device or between a computer and a remote computer or server.

This is a list of file synchronization software for which there are Wikipedia articles.

<span class="mw-page-title-main">@MAX SyncUp</span>

@MAX SyncUp is a free proprietary backup and file synchronization program developed by @MAX Software for Windows. It is targeted at individuals and small businesses. The software supports backup to locally writable folders, including attached USB devices, network drives and local directories. It also supports backup and synchronization to WebDAV servers, (S)FTP servers and the cloud storages such as Google Drive and Dropbox.

<span class="mw-page-title-main">Syncthing</span> Free and open-source peer-to-peer file synchronization application

Syncthing is a free and open source peer-to-peer file synchronization application available for Windows, macOS, Linux, Android, Solaris, Darwin, and BSD. It can sync files between devices on a local network, or between remote devices over the Internet. Data security and data safety are built into its design. Version 1.0 was released in January 2019 after five years in beta.

<span class="mw-page-title-main">FreeFileSync</span> Free and open-source file synchronization program

FreeFileSync is a free and open-source program used for file synchronization. It is available on Windows, Linux and macOS. The project is backed by donations. Donors get access to a Donation Edition that contains a few additional features such as an auto-updater, parallel sync, portable version, and silent installation. FreeFileSync has received positive reviews.

References

  1. "Unison Wiki | Main / UnisonFAQGeneral". alliance.seas.upenn.edu.
  2. Error: Unable to display the reference properly. See the documentation for details.
  3. "unison packages dissection - Repology". repology.org.
  4. Pierce, Benjamin C., and Jérôme Vouillon. "What's in Unison? A formal specification and reference implementation of a file synchronizer." Technical Reports (CIS) (2004): 40. https://repository.upenn.edu/cgi/viewcontent.cgi?article=1045&context=cis_reports
  5. Uppoor, Sandesh, Michail D. Flouris, and Angelos Bilas. "Cloud-based synchronization of distributed file system hierarchies." 2010 IEEE International Conference on Cluster Computing Workshops and Posters (Cluster Workshops). IEEE, 2010. https://ieeexplore.ieee.org/abstract/document/5613087
  6. Diehl, Mike (April 14, 2008). "File Synchronization with Unison | Linux Journal". Linux Journal .
  7. "How to use Unison to sync files on Linux machines across a network". TechRepublic . 29 October 2020.
  8. Hein, Werner. "In Sync » Linux Magazine". Linux Magazine.
  9. Erik Inge Bolso (March 1, 2005). "File Synchronization with Unison | Linux Journal". Linux Journal .
  10. Byfield, Bruce. "Command Line – unison » Linux Magazine". Linux Magazine .
  11. "Unison-docker". GitHub . 3 June 2022.
  12. "2.52 Migration Guide". GitHub . 25 Feb 2022.