понедельник, 11 февраля 2008 г.

Синхронизуемся!

преамбула:

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

что имеем:

Домашний комп, ОС Linux; Ноут, ОС Linux; Рабочий комп, ОС Windows.

что хотим:

Двухсторонняя синхронизация рабочих файлов через флешку с рабочим компом и напрямую (или через ssh) с буком.

что делаем:

Идём на гугл с запросом "linux синхронизация файлов" и буквально первой строкой находим на opennet список программ для самвх различных нужд. Из описаний находим, что то что надо, называется unison.

Если коротко, программа использует алгоритм rsync но кроме того сохраняет сведения о дате последней синхронизации благодаря чему правильно обрабатывает изменения и удаления файлов в обоих направлениях, проста в настройке, является кроссплатформенной и свободной. Синхронизация осуществляется по профилям - файлы с расширением *.prf которые лежат в ./unison, настройку которых рассмотрим чуть позже.

установка:

altlinux

# apt-cache search unison

# apt-get install unison-beta

В windows для начала необходимо скачать и установить gtk2 for win32 после чего скачать винарник unison с домашней страницы проекта. Не имея желания разбираться с путями, я скинул бинарник прямо в папку bin, что находиться в дирктории с установленним gtk и вынес ярлык на стол.

настройка:

# unison --help даёт список доступных параметров, из которого сходу трудно выделить значимое. С домашней странички проекта http://www.cis.upenn.edu/~bcpierce/unison/docs.html идём по ссылке "User manual" читаем по выбору что интересно, но главное - останавливаемся на "Sample Profiles". В секции "Sample Profiles" находим несколько примеров профилей. За основу берём "A Basic Profile", поскольку бекап пока не интересен, удаляем все связанные с ним строчки. Указываем корневые директории для синхронизации (локальную, и удалённую)

# Roots of the synchronization

root = /home/bcpierce/Documents

root = /media/disk/Documents

Указываем пути, которые необходимо синхронизовать.

# Paths to synchronize

path = current

path = common

path = .netscape/bookmarks.html

Без этих параметров под синхронизацию попадаут все "Documents", более того, при первом запуске программы через GUI можно указать директории root1 и root2 но нельзя указать переменные path (может я конечно недостаточно внимательно всё осмотрел), именно по этой причине и рассматриваю настройку через прямую правку профилей. Ещё одна особенность - в windows при графической настройке пути root не должны содержать русских символов, т.к. программа почему-то не может зайти в них. Однако все вложенные директории обрабатываются вполне корректно.

Отметим что unison кроме содержания файлов также обращает внимание и на их права. В случае с флешкой от этой роскоши мы отказываемся, а чтобы программа не обращала внимания на различие прав добавляем в профиль строчку:

perms = 0o1600

Теперь сохраняем файл в ~./unison/flash.prf после чего запускаем:

# unison flash

При первой синхронизации программа выдаст предупреждение, что нет инфомации о прошлых сессиях, но при следующх запусках этого уже быть не должно. Аналогично настраивается синхронизация с буком, для чего можно сделать профиль, например, notebook. Параметр perms в этом случае уже лишний, если конечно устраивает его значение по-умолчанию 0o1777.

Успешной синхронизации!

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