Библиотека сайта rus-linux.net
Ноутбук в 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 разрабатывался лишь для синхронизации двух машин. В этом же случае синхронизация нескольких машин может быть достигнута с использованием топологии "звезда": одна машина должна быть центром звезды или концентратором, а другие машины должны постоянно синхронизироваться с этом машиной. Если вы не будете экспериментировать с синхронизацией двух компьютеров-"отростков", тогда все будет хорошо.