Unison — консольная OCaml (Objective Caml) утилита для двунаправленной синхронизации файлов.
Unison имеет простой и и интуитивно понятный GTK пользовательский интерфейс (GUI), при создании утилиты использовался алгоритм Rsync (универсальная консольная утилита для копирования файлов), поэтому при синхронизации между каталогами передаются только изменившиеся файлы (частей файлов).
Работа двунаправленной синхронизации Unison заключаются в том что одновременные изменения в файлах и каталогах, в двух копиях будут синхронизированы и объединены (при синхронизации проверяются и сохраняются права доступа), в этом и заключается отличие от зеркалирования используемого Rsync, когда изменения распространяются только в одну сторону (от источника к назначению).
Unison может работать локально и в клиент-серверном режиме, поддерживается сжатие передаваемых данных, предоставляя возможность оптимально использовать канал передачи данных. Для удобства использования можно создавать профили, в которых задаются каталоги для синхронизации, типы файлов которые следует игнорировать и прочее. Профили сохраняются в виде обычных текстовых файлов, с расширением *.prf (в каталоге ~/.unison).
При синхронизации с удалёнными компьютерами рекомендуется использовать протокол SSH (Secure Shell), для синхронизации на более чем двух компьютерах предпочтительно задействовать "топологию звезда", когда все компьютеры-клиенты синхронизируются через один компьютер-сервер. Это помогает избегать конфликтов, которые могут возникнуть при использовании "топологии кольцо".
Первая синхронизация и синхронизация больших каталогов может занять много времени (особенно с удалённой машиной), в процессе синхронизации выводится таблица изменений между каталогами. Единственная ситуация в которой Unison не сможет справится без участия пользователя, это когда на машинах-клиентах изменились одни и те же файлы, в такой ситуации будет выдан запрос какой файл сохранить (для просмотра различий используется diff).
Лицензия: GNU General Public License version 3.0 (GPLv3)