Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Решение административных задач в Linux

Ноутбук в Unison с ПК

Оригинал: Keep your laptop and PC in Unison
Автор: Federico Kereki
Дата: 4 сентября 2007
Перевод: Александр Тарасов aka oioki
Дата перевода: 26 сентября 2007

В своей работе мне часто приходится ходить куда-нибудь с ноутбуком, но также работать и на настольном ПК. Поэтому мне приходится задумываться о синхронизации файлов. Я пробовал разные средства, от простых команд наподобие scp и rsync до утилит типа Krusader, который имеет функцию синхронизации каталогов на различных машинах. Недавно я стал пользоваться Unison.

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

Unison распространяется свободно под лицензией GNU GPL. Похоже, разработка сейчас приостановлена, по крайней мере за последнее время не выпущено новой версии. Тем не менее, на сайте говорится, что первоначальные разработчики все еще используют программу, продолжают ее поддержку и (при случае) выпускают исправления ошибок или мелкие исправления. Текущая стабильная версия - 2.13.16, но также имеется бета-версия 2.27.29 (какой скачок!) и текущая разрабатываемая (нестабильная) версия 2.28.15.

Так как программа существует уже долгое время, она есть в большинстве репозиториев. На моем openSUSE (как 10.1, так и 10.2) установка Unison прошла без проблем. Странно, но для openSUSE 10.1 в репозитории лежит версия Unison 2.13.16, а для 10.2 более новая 2.17.1. Это создает проблему, так как требуется использовать одинаковые версии программы на обеих машинах, поэтому я отправился на rpmseek.com и загрузил версию 2.17.1 для моей openSUSE 10.1.

Пробуем

После загрузки Unison и его установки на всех машинах, которые вы хотите синхронизировать, откройте окно консоли. Команда unison -doc tutorial выведет краткий курс по программе. Аналогичные команды: unison -doc topics выведет список всех разделов справки, а unison -doc откроет собственно руководство.

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

Как говорится в документации, самый простой (и безопасный) способ использования Unison - синхронизация двух каталогов на одном и том же компьютере. Сперва я создал пару одинаковых каталогов под названиями оригинал и копия. После этого первая проверка: unison -ui text original copy, после чего появилось длинное сообщение о первом запуске, в котором рассказывалось для чего предназначен Unison и, наконец, было сообщено о том, что синхронизация не требуется. Вызов команды unison original copy без аргумента text приводит к появлению сообщения "Everything is up to date" ("Все обновлено").

Затем были сделаны некоторые изменения в обоих каталогах - я редактировал, удалял и переименовывал файлы, после чего снова запустил синхронизацию. В этот раз передо мной появился список различий между каталогами. Для новых файлов интерфейс покажет "new file" и скопирует его во второй каталог. Удаленные файлы будут удалены во втором каталоге. Для файлов в обоих каталогах, которые различаются, пользователь должен указать, какой из них выбрать, нажав "<" или ">", или нажав "/", чтобы не производить никаких действий. К слову, если ввести "?", будет выдан список возможных ответов (см. пример ниже).

Кстати, алгоритм обнаружения изменений фактически не производит сравнения содержимого файлов, а вместо этого определяет изменения по времени последнего изменения и номеру inode. Если ни один не был изменен, значит и файл не был изменен. Это достаточно безопасно - хотя такой алгоритм может приводить к ложным срабатываниям, зато он не упустит реальных изменений. Конечно, вы можете обмануть алгоритм, используя touch для обновления времени изменения файла. Вся информация о файлах хранится в скрытом каталоге .unison.

Contacting server...
Contacting server...
Looking for changes
Reconciling changes

original       copy
changed  ====> changed    listing  [] >
deleted  ---->            mounts  [f] f
         <---- new file   new_one  [f] f

Proceed with propagating updates? [] ?
Commands:
  y or g                Yes: proceed with updates as selected above
  n                     No: go through selections again
  q                     exit unison without propagating any changes
Proceed with propagating updates? [] y
Propagating updates

UNISON started propagating changes at 13:46:02 on 25 Aug 2007
[BGN] Updating file listing
  from /home/fkereki/Documents/articles/prueba/original
  to /home/fkereki/Documents/articles/prueba/copy
[END] Updating file listing
[BGN] Copying new_one
  from /home/fkereki/Documents/articles/prueba/copy
  to /home/fkereki/Documents/articles/prueba/original
[END] Copying new_one
[BGN] Deleting mounts
  from /home/fkereki/Documents/articles/prueba/copy
[END] Deleting mounts
UNISON finished propagating changes at 13:46:02 on 25 Aug 2007

Saving synchronizer state
Synchronization complete  (3 items transferred, 0 skipped, 0 failures)

Работа с двумя компьютерами

Есть несколько способов использования Unison для синхронизации двух машин. Самый простой подход - соединение через SSH. Для проверки возможности такого подключения, наберите ssh 192.168.0.198 unison -version, подставив вместо 192.168.0.198 IP-адрес машины, на которой установлен Unison. После ввода пароля вы должны увидеть версию Unison. Если требуется зайти под именем другого пользователя, введите ssh пользователь@192.168.0.198 unison -version.

Если соединение работает, вы можете делать синхронизацию путем ввода команды наподобие unison original ssh://192.168.0.198//home/fkereki/original (заметьте двойное "//"). Опять же, если требуется зайти под другим пользователем, введите unison original ssh://пользователь@192.168.0.198//home/fkereki/original.

Соединение через сокеты также просто, но немного менее безопасно, поэтому не следует создавать его в открытой сети. Этот метод требует установки Unison в режим сервера на удаленной машине. Также в этом режиме Unison может обслуживать лишь одного клиента в данный момент времени, поэтому в случае, если два пользователя захотят синхронизировать свои каталоги, одному придется ждать. Наконец, заметьте, что Unison работает с правами того пользователя, который его запустил; если нескольким пользователям нужно синхронизироваться с сервером, и все они имеют различные права, тогда им придется пользоваться методом SSH.

Для использования сокетного соединения нужно ввести unison -socket 12345 на серверном компьютере. После этого Unison будет ожидать соединений. Вы можете добавить "&" в конце команды, чтобы Unison работал в фоновом режиме. Параметр, идущий после -socket, 12345 - обычный номер порта, вы можете выбрать практически любой, между 10000 и 40000 (некоторые номера портов запрещены, посмотрите здесь, чтобы узнать, какой можно использовать). Пока Unison работает на удаленной машине, вы можете синхронизировать файлы как и выше, запуская unison original socket://192.168.0.198:12345/home/fkereki/original, при этом будут получен такой же результат, как и в случае SSH.


Для Unison существует графическая оболочка под названием Unison-Gtk

Продвинутые функции

Конечно, у Unison есть куча настроек. Если вы постоянно используете одни и те же, будет удобнее указать их в файле профиля (который имеет свой формат и хранится в каталоге .unison), и затем запускать unison профиль. О подробности профилирования читайте в документации.

Если вы хотите синхронизировать несколько машин, вам нужно быть осторожным, так как Unison разрабатывался лишь для синхронизации двух машин. В этом же случае синхронизация нескольких машин может быть достигнута с использованием топологии "звезда": одна машина должна быть центром звезды или концентратором, а другие машины должны постоянно синхронизироваться с этом машиной. Если вы не будете экспериментировать с синхронизацией двух компьютеров-"отростков", тогда все будет хорошо.

Заключение

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