четверг, 1 июня 2017 г.

Синхронизация между локальными каталогами и каталогами другого компьютера по SSH в Linux, Ubuntu, Linux Mint. ПО Unison

Недавно возникла задача по синхронизации данных между каталогами (папками, но в Linux правильнее говорить не папки, а каталоги) двух компьютеров в ЛВС. Оба компьютера функционируют под управлением Linux и не используют Samba, отдав предпочтение SSH.

После поиска и чтения описаний предлагаемых вариантов было принято решение использовать ПО Unison. При принятии решения учитывались требования:
– способность ПО работать по SSH;
– минимальное погружение в синтаксис командной строки при настройке заданий;
– наличие графической оболочки;
– отсутствие автоматизации выполнения заданий не является критичным.


Unison – утилита для синхронизации файлов, написанная на языке OCaml. Она позволяет синхронизировать две копии файлов, на локальном компьютере или на двух разных хостах, обновляя каждую копию в зависимости от произведённых изменений.

Unison работает под Unix-подобными операционными системами и под Windows. Он также может работать с разными платформами одновременно, например, синхронизируя файлы между Windows-ноутбуком и Unix-сервером.
В отличие от простых утилит для создания зеркал и резервных копий, Unison умеет работать с изменениями в обеих копиях файлов. Неконфликтующие изменения могут вноситься автоматически, а конфликтующие определяются и отображаются для ручного разрешения.
Unison работает между любыми компьютерами, соединёнными между собой глобальной или локальной сетью, через сокет или зашифрованное соединение. Он приемлемо работает на медленных PPP-соединениях. Передача небольших изменений в больших файлах оптимизируется протоколом, похожим на rsync.
Unison также позволяет восстановить копии файлов после обрыва связи или некорретного завершения работы.

В настоящее время активная разработка прекращена, а команда разработчиков сфокусировалась над проектом Harmony.

Источник: Википедия


Установку ПО в Linux Mint можно произвести из менеджера программ, задав в окне поиска unison.


Для установки отметить Unison-gtk


После установки вызов программы производится из меню "Инструменты":



При первом запуске программы не имеется никаких настроек, поэтому высвечивается запрос на создание и настройку профиля. Нажмите на кнопку "Добавить".




Укажите имя профиля и его описание. Если описание можно не указывать, то имя профиля указать необходимо. Без этого не станет активной кнопка "Вперёд".

Далее указывается тип синхронизации, которых может быть несколько. Кликая по стрелочке выбора, меняю Local на SSH и снова нажимаю "Вперёд".


Программа умеет разговаривать на русском лишь частично (при отображении нескольких окон мастера), но, надеюсь, что пояснения к дальнейшим картинквм будут понятны.

В следующем окне мастера необходимо указать узел и пользователя, с полномочиями которого будет производиться соединение с сервером SSH. Как установить и настроить SSH (OpenSSH) на своём домашнем компьютере читайте здесь.


В моём случае в поле Host было указано H67.vot, так как преобразование имени в адрес IP производится маршрутизатором MikroTik. В Вашем случае необходимо или указать адрес IP (с назначением статического IP узлу, с которым будете соединяться), или назначить выдачу Вашим модемом постоянного адреса IP (пример для "Промсвязь" ZXV10 H208L). В дальнейшем на узле, который будет соединяться по SSH с другим компьютером, этот постоянный адрес IP прописать в файл /etc/hosts как IP имя компьютера. Редактировать hosts необходимо под правами суперпользователя, например, sudo gedit /etc/hosts или sudo xed /etc/hosts.

Далее будет предложено указать локальный и удалённый каталоги.



Обратите внимание, что при соединении с сервером SSH каталогом сервера, от которого будет производиться навигация, является корневая точка монтирования, т.е. /  Поэтому каталог удалённого узла (Remote directory) необходимо прописать с полным путём. У Вас будет что-то наподобие  /home/пользователь/каталог.

Следующее окно можно смело пропустить, так как файловая система FAT в описываемом случае использоваться не будет и в финальном окне мастера указать "Применить".



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


Запуск задания осуществляется по кнопке "Открыть".


При этом будет выдан запрос на ввод пароля пользователя, под полномочиями которого будет произведено соединение с сервером SSH (OpenSSH).


Сначала не будет показано никакого отображения содержания каталогов, так как будет произведено сравнение их содержания. Об этом свидетельствует "Looking for changes" в нижней части окна.


Как только это действие будет завершено, то отобразится список необходимых действий (столбец Action). На рисунке ниже показано, что имеются каталоги (dir), которые необходимо получить от узла H67 и каталоги, которые необходимо на него загрузить, так как на H67 отсутствуют каталоги, имеющиеся на локальном компьютере.


В главном окне программы имеются кнопки выбора действий. Нажимаю кнопку "Go".


При выполнении задания будут отображены ход процесса, оставшееся время выполнения задания, скорость обмена данными, процент выполнения для каталогов, файлов и их наименования.




После завершения задания в окне статуса появляется долгожданное complete.


Теперь содержание синхронизируемых каталогов двух узлов в моей домашней ЛВС идентично.

Настройки и протоколы работы программы расположены в скрытом каталоге .unison домашнего каталога пользователя системы. Настройки конкретного профиля находятся в файле prf.

Комментариев нет:

Отправить комментарий