Unison - это двунаправленный инструмент синхронизации файлов с обнаружением конфликтов для OSX, Unix и Windows. Он позволяет хранить две копии набора файлов и каталогов на разных хостах (или разных дисках на одном хосте), изменять их отдельно, а затем обновлять, распространяя изменения в каждой реплике на другую.

Обзор

Unison - это инструмент синхронизации файлов для OSX, Unix и Windows. Он позволяет хранить две копии набора файлов и каталогов на разных хостах (или разных дисках на одном хосте), изменять их по отдельности, а затем обновлять путем распространения изменений в каждой реплике на другую.

Unison имеет ряд общих функций с такими инструментами, как пакеты управления конфигурацией ( CVS , PRCS , Subversion , BitKeeper и т. Д.). .), распределенные файловые системы ( Coda и т. д.), утилиты однонаправленного зеркалирования ( rsync и т. д.) и другие синхронизаторы ( Intellisync , ] Примирить и т. Д.). Однако есть несколько моментов, в которых он отличается:

  • Unison работает как в Windows, так и во многих разновидностях Unix (Solaris, Linux, OS X и т. Д.) Систем. Кроме того, Unison работает на разных платформах, что позволяет вам синхронизировать ноутбук Windows с Unix-сервером, например.

  • В отличие от простых утилит зеркалирования или резервного копирования, Unison может работать с обновлениями обеих реплик распределенной структуры каталогов. Обновления, которые не конфликтуют, распространяются автоматически. Конфликтующие обновления обнаруживаются и отображаются.

  • В отличие от распределенной файловой системы, Unison - это программа уровня пользователя: нет необходимости изменять ядро ​​или иметь привилегии суперпользователя на любом хосте.

  • Unison работает между любой парой машин, подключенных к Интернету, общаясь по прямой линии сокета или туннелируя по зашифрованному соединению ssh. Он осторожен с пропускной способностью сети и хорошо работает на медленных каналах, таких как соединения PPP. Передача небольших обновлений в большие файлы оптимизируется с использованием протокола сжатия, аналогичного rsync.

  • Унисон устойчив к сбоям. Осторожно всегда оставлять реплики и собственные частные структуры в разумном состоянии, даже в случае ненормального завершения или сбоев связи.

  • Унисон имеет четкую и точную спецификацию.

  • Унисон свободен; полный исходный код доступен по открытой лицензии GNU.

Использование

При первом запуске Unison для полной синхронизации указанных каталогов потребуется некоторое время. Он создаст архивные файлы в каталоге .unison ($HOME/.unison в Unix, $USERPROFILE\.unison в Windows) для хранения структуры каталогов синхронизации и ускорения будущих синхронизаций.

Унисон может быть запущен очень простым способом, вызывая его как unison [options] root1 root2, где root1 и root2 - каталоги, которые нужно синхронизировать. Чтобы упростить запуск Unison с большим количеством опций и проще вызывать Unison из скрипта или как задание cron, удобно создать профиль, чтобы указать корни синхронизации и другие опции. Если у нас есть профиль profile.prf (хранится в каталоге .unison), мы можем использовать этот профиль, запустив unison profile. Простой профиль будет выглядеть примерно так:

# profile.prf root = /home/user root = ssh://user@198.51.100.42//home/user path = Documents path = Files 

Это позволит синхронизировать локальные каталоги /home/user/Documents и /home/user/Files с соответствующими удаленными каталогами на 198.51.100.42 по ssh.

Более интересный профиль Unison, который можно использовать для автоматизации резервного копирования на удаленный сервер, может выглядеть примерно так:

# profile.prf root = /home/user root = ssh://user@198.51.100.42//home/user sshargs = -C -i /path/to/ssh_key path = Documents ignore = Path Documents/secrets ignore = Name *.tmp ignore = Name {.*,*}.sw[ponx] auto = true batch = true confirmbigdeletes = false backuplocation = central backupdir = /home/user/Unison-Backups maxbackups = 7 backup = Name {.*,*} backupprefix = .$VERSION 

Этот профиль будет синхронизировать все /home/user/Documents с удаленным сервером, за исключением Подкаталог /home/user/Documents/secrets, все файлы с расширением .tmp и любые файлы подкачки, которые vim любит создавать. Он также автоматически синхронизирует файлы без запроса подтверждения (auto = true) и будет хранить резервные копии файлов, которые будут перезаписаны при синхронизации в /home/user/Unison-Backups.

Полезные ссылки

Домашняя страница Unison
Руководство пользователя и справочное руководство
Хорошее руководство по Unison Филипп Го