Синхронизация файлов - непростой вопрос. Я описывал эволюцию своих подходов в статье “Безопасная синхронизация”. В ней я остановился на консольном Unison. Прошло три месяца.

Для двунаправленной синхронизации файлов Unison меня вполне устраивал. Быстрый, надёжный, не зависит от облачных сервисов. Вдобавок к Time Machine я перед и после синхронизации в скрипте делал бекап важных данных с помощью rdiff-backup, так что даже при возможном сбое я смог бы откатиться к нужной версии.

Когда шла речь о небольших объёмах, то всё работало замечательно. Гигабайт был плёвым делом. Я перенёс туда все конфигурации приложений из Dropbox, рабочие документы, заметки, книги и т.д.

Сделаю отступление. Когда появляется желание работать с фотографиями на нескольких компьютерах, то это заканчивается обычно ничем. iPhoto и Aperture могут работать только на одном компьютере. Многие (навскидку - Macstories) перешли от фототек к хранению фотографий в иерархиях каталогов.

Я посмотрел на базу Aperture размером 80 GB (DSLR у меня был на 6MP) и задумался. Я снимал в RAW, неудачные фотографии не удалял, а помечал как rejected. В итоге накопилось очень много лишнего. Понял, что вряд ли я вернусь к тысячам неудачных фотографий, сделал бекап Aperture и экспортировал всё из RAW в JPEG. На выходе получил 35 GB. Для работы с этой файловой фототекой использовал Lightroom, очень мне он пришёлся по душе.

Следующим шагом была синхронизация фотографий. Но нет - Unison’у стало очень тяжело при обработке, а когда всё-таки файлы начали списываться, то у меня отвалился интернет на минуту и пришлось повторять всё с нуля. После второго сбоя понял, что я не смогу довести синхронизацию до конца.

Rsync был бы выходом, но вот пришлось бы помнить, что вот сейчас я пишу в направлении A->B, а потом нужно в B->A, а если случайно перепутаю, то все мои изменения в фотографиях накрылись безвозвратно. Нихт.

Bittorent Sync съел 35 GB резво и синхронизировал их очень достойно. Но мне ещё нужна и база Lightroom. Учитывая то, что я не запускаю одновременно Lightroom на двух сторонах (дополнительно собирался ввести проверку), то повредить базу было бы тяжело. А вот нет - пару раз сам BTSync что-то делал непонятное и Lightroom (запущенный только на ноутбуке) вылетал с сообщением, что что-то изменено и продолжить работу нельзя. Следующее усложнение подразумевало установку на паузу BTSync при запуске Lightroom. но что-то мне это надоело. Решил базу Lightroom синхронизировать Unison’ом, а фотографии вручную rsync’ом.

Дальше - интереснее. Решил свежие фотографии сливать на ноутбук, а так как их не слишком много, то синхронизировать Unison’ом. Дальше работать с ними и обработанные переносить в каталог с фотографиями, и, как сказал, раньше, Lightroom - Unison’ом, фотографии - rsync’ом. Жуть, а не workflow.

Но это работало. До момента, пока не захотелось заодно тегировать фотографии тегами Mavericks… Оказалось, что unison не синхронизирует расширенные аттрибуты файлов, в которых и находятся теги. Очередные танцы привели к возможному решению - включить для синхронизации unison пофайловое копирование rsync’ом (звучит ещё мрачнее, чем предыдущее).

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

Вывод прост - Unison не работает нормально с тегами. А учитывая то, что проект не развивается, то ждать исправления нереально. Самому влазить в код не хочется. Так что нужно или искать что-то новое, или отказываться от тегов. Но уже зерно недовольства упало в почву.

Следующая итерация - Synology Cloud Station на моём NAS. Поставил. Работает. Но какое оно убогое! И что-то доверия не очень много к такому софту. А к чему есть доверие и что работает стабильно? Вспомнилась сценка из Monty Python о том, как распознать ведьму.

Посидел, подумал. Ещё раз подумал. Мне нужен был Unison в основном для того, чтобы синхронизировать “секретные” заметки, в которых встречались пароли. А если всю “секретную” часть вынести в заметки 1Password, то никаких тайн больше нет. И! Добро пожаловать, Dropbox! Старые заметки скопировал на ноутбук и сказал себе, что они будут в read-only. Несекретные заметки начал с нуля.

В итоге от схемы “VPN + Unison + rsync” пришёл к Dropbox. Для фотографий купил 100 GB на Dropbox’е. Остальное и так влезало. И доволен. Отбросил кучу сложностей, отказался от Server.app на Mac mini.

Чем проще - тем лучше. Keep it simple, stupid.