Журнал LinuxFormat - перейти на главную

LXF110:DrBrown2

Материал из Linuxformat
Версия от 11:06, 19 ноября 2009; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Гармония в унисон

Unison Средство двусторонней синхронизации данных с явными преимуществами над аналогами типа rsync.

Итак, поднимите руку те, кто работает более чем на одном компьютере. Так я и думал – очень много! Тогда вам нужно как-то синхронизировать их. Тот отчет об охоте на морских лис, который вы редактировали – на которой машине его последняя версия? Новые картинки для издателя – куда они делись с рабочего стола? И те древние счета, которые вы удалили – почему они все еще захламляют компьютер?


Есть немало приложений с открытым исходным кодом, помогающих синхронизировать файловые системы двух компьютеров. Сейчас мы поговорим об Unison. Это не новая программа (честно говоря, помоему, ее активная разработка прекращена), но она входит во множество дистрибутивов Linux, не говоря уже о других разновидностях Unix и даже Microsoft Windows; она очень проста и работает.

Вы, возможно, знакомы с утилитами синхронизации типа rsync. rsync отлично делает свою работу, но по сути это рейс в один конец. Вы решили, что на компьютере A самые последние версии файлов и обновили компьютер B с помощью rsync, чтобы на нем было то же самое. В Unison используется эффективный протокол обновления, который похож на rsync, но работает в обоих направлениях. Процитируем его документацию: «Unison – средство синхронизации файлов в Unix и Windows. Оно позволяет хранить две копии набора файлов и каталогов на разных компьютерах (или на разных дисках одного и того же компьютера), изменять их по отдельности, а затем

Синхронизируем два Ubuntu

В следующем примере мы синхронизируем каталог Documents на ноутбуке (с Ubuntu 7.04) с таким же каталогом на настольном компьютере (с Ubuntu 8.04). ОС здесь по большому счету не играет никакой роли и может быть самой разной; главное – запускать одну и ту же версию Unison как на клиенте, так и на сервере. Начнем с установки Unison на обоих компьютерах:

$ sudo apt-get install unison

Запустить Unison на «сервере» (в данном случае это настольный компьютер, который я называю ‘hardy’, по установленной на нем версии Ubuntu) можно и как самостоятельный сервис, но проще и безопаснее воспользоваться зашифрованным соединением через SSH. В качестве первого теста я попробовал вот это:

$ ssh hardy unison -version
unison version 2.13.16
$ unison -version
unison version 2.13.16

то есть SSH работает, и на обоих компьютерах установлена одна и та же версия Unison.

Файлы настройки Unison, называемые профилями, находятся в каталоге ~/.unison. Я создал очень простой профиль playtime.prf, задав в нем два каталога, которые хочу синхронизировать. Он выглядит так:

root = /home/chris/Documents
root = ssh://hardy//home/chris/Documents

Теперь можно синхронизировать две файловые системы, выполнив команду:

$ unison playtime

SSH запросит пароль для сервера, затем Unison по шагам проведет вас через каждое изменение, которое он хочет внести, и спросит, стоит ли это делать.

На этом этапе можно воспользоваться некоторыми однобуквенными командами. Например, > отправляет файл от клиента на сервер, < отправляет файл в обратном направлении, а / пропускает файл. В качестве альтернативы можно принять каждое рекомендованное действие, нажимая Enter, или делать это автоматически, добавив в профиль следующую строку:

auto = true

Тот же эффект можно получить, указав ключ -auto при запуске команды:

$ unison -auto playtime

Есть масса других интересных вещей, которые можно делать в профиле. Например, директива ignore позволяет задать (с помощью масок) имена файлов и каталогов, которые нужно игнорировать, а директива path – подробный список файлов и каталогов, которые нужно синхронизировать.

У Unison есть и графический интерфейс. В Ubuntu потребовалось установить его отдельно:

$ sudo apt-get install unison-gtk

Теперь можно просто выполнить команду unison-gtk. Через графический интерфейс можно выбрать профиль (из файлов ~/*.prf), а затем построить и просмотреть список изменений, которые будут сделаны. Однобуквенным командам здесь соответствует клик левой кнопкой мыши, но он намного удобнее. На экранном снимке вы видите, что для файла pedant.txt не предложено действие по умолчанию (красный знак вопроса в нижней части снимка), так как он редактировался независимо друг от друга на двух компьютерах.

Где узнать больше

За что я особенно люблю Unison, это за количество и качество документации. Получить полный список тем можно, выполнив команду:

$ unison -doc topics

а для более подробной информации попробуйте:

$ unison -doc running

или посетите сайт http://www.cis.upenn.edu/~bcpierce/unison.

Персональные инструменты
купить
подписаться
Яндекс.Метрика