О синхронизации файлов и пользе гибкости

Синхронизация файлов — непростой вопрос. Я описывал эволюцию своих подходов в статье «Безопасная синхронизация». В ней я остановился на консольном 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.

Полный текст статьи читайте на TheAppleGeek