Довольно долго я работал на своем десктопе с установленной Gentoo. Документы аккуратно хранились по папочкам, со своей структурой и своим порядком. Но как-то на одном из проектов понадобился ноутбук. При чем с Виндой на борту, так как Excel, Word и Powerpoint не полностью совместимы с открытыми брятьями из OpenOffice. Ну Винда виндой, бог с ней, глючит иногда, но работать можно. Проблемы возникли когда я начал вести часть проектов на одной десктопе, а часть на лаптопе. При это обычно получалось, что за какой машиной я бы не работал, необходима информация по всем проектам одновременно.
Задумавшись о синхронизации и погуглив немного, наткнулся на интересную програмку - Unison. Она позволяет синхронизировать файлы на двух (и более!) машинах. Что самое замечательное - она дружит как Windows, так и *nix.
Unison
Данное приложение может работать как в клиент-серверном варианте, так и stand-alone режиме. Пользовательский интерфейс представлен gui'овым окном, а также текстовым интерфейсом для настоящих джигитов.
Unison позволяет синхронизировать директории в трех режимах:
- локально
- по ssh
- через сокеты
Простой путь
Настроим Unison на работу с Window (назовем laptop) на лаптопе и Linux (назовем desktop) на десктопе. При этом выберем локальный режим синхронизации, где одной из локальных дерикторий будет выступать проектная папка на Linux, а другой будет выступать "удаленная" директория Windows, смонтированная smbmount.
И так, устанавливаем Unison:
$> emerge -v unisonПока все просто. Далее, монтируем удаленную директорию. Для этого нам понадобится Samba. Ее настройка является отдельной темой, и здесь я это затрагивать не буду.
Первоначально, на laptop расшариваем директорию для синхронизации. Далее, для Linux бокса desktop прописываем в /etc/fstab строку для монтирования.
//laptop/Projects /mnt/laptop cifs noauto,users,password=,iocharset=utf8,codepage=cp866 0 0(не забудьте заменить "laptop" именем Вашей машины). Я держу расшареную папку открытой, так что пароль указываю пустой. Если все же необходим пароль, то лучше использовать интеракитвный ввод, чем вбивать пароль в открытом виде в fstab.
Далее, монтируем раздел:
$> mount /mnt/laptopНа этом этапе очень важно проверить, что русские шрифты отображаются правильно как на существующих на Windows-машине файлах, так и на вновь создаваемых. В противном случае при синхронизации можно получить "кашу" из файлов неверной кодировки.
Далее, запускаем Unison,
$> unisonсоздаем новый профайл, указываем две директории синхронизации. При этом необходимо указать опцию "local" - фактически это синхронизация двух локальных директорий. Как только просчитаются изменения, можно жать "Go" и пойти выпить кофе. Синхронизация, особенно больших директорий, вещь не быстрая.
Сложный путь
Данный способ предполагает что мы используем честную синхронизацию между двумя машинами, не используя читерских приемов вроде монтирования дисков. Все по честному :).
И так, на laptop с Windows на борту устанавливаем SSH. Рекомендую воспользоваться следующим дистрибутивом, не требующем установки Cygwin. Взять его можно на sf:
http://sshwindows.sourceforge.net/download/
Установка тривиальная - запускаем инсталятор и он все делает сам. Далее немного шаманизма (т.е. настройки). Заходим в cmd и проделываем следующее:
cmd> cd C:\Program Files\OpenSSH\bin
cmd> mkgroup -l >> ..\etc\group
cmd> mkpasswd -l [-u] >> ..\etc\passwd
Установка unison на desktop (linux-box) описана выше. Предполагаем, что на линуксе уже установлен ssh (ну а как же иначе :) .
Все. Настройка завершена. Запускаем Unison, указываем локальную и удаленную директорию, выставляем крыжик "SSH" и процесс пошел. Казалось бы этот путь по проще. Почему же он обозначен как сложный? Да потому, что автору так и не удалось добиться нормальных русских шрифтов при синхронизации. Если кому-либо удастся это победить, чиркните мне пару строк в комментарии. Буду признателен.
