Еще одно домашнее облако - BitTorrent Sync

Тема домашнего облака у меня тут не нова и не так давно я писал о вполне достойном представителе этого растущего семейства продуктов Seafile. В подкасте радио-т мы тоже не раз и не два обсуждали подобные темы и подробно упоминали сегодняшнего героя BitTorrent Sync, но вдумчиво на него посмотреть еще раз видимо будет полезно.

На первый взгляд BitTorrent Sync лежит несколько в другой плоскости. Авторы называют его средством безопасной, автоматической синхронизации файлов, но если копнуть глубже то мы найдем тут именно то, что хочется от локального, домашнего облака. Нет, не все, что хотелось на 100%, но очень, очень близко к тому.

Концептуальное описание технологии можно почитать на иностранном языке, но по сути это распределенная система с P2P синхронизацией. Нечто, напоминающее обычные торренты, но гораздо более подходящая для домашне-облачного применения. Программа существует для всего, что я знаю (включая мой любимый RPi) и на всем этом, вероятно, работает. Я пробовал только версии OSX, RPi (ARM) и Linux (i386 и x64), но судя по всему и для остальных систем включая Windows, BitTorrent Sync (aka btsync) работает вполне.

Текущий статус программы мне трудно определить, но видимо это нечто типа экспериментальной бета версии. Я наблюдаю за этим продуктом с апреля 2013 и много и активно с ним экспериментирую. За отчетный период нашлось знатное количество багов и проблем, некоторые из них были абсолютно критические, но эти суровые времена миновали и на сегодня я не вижу ничего такого, что может меня удержать от теплых слов и горячих рекомендаций. Последняя версия на момент написания была 1.1.15 и все, что я тут пишу относится именно к этой версии.

Установка BitTorrent Sync элементарна под любой системой, как впрочем и настройка. Для OSX и Win версий есть простой, но достаточный GUI и минимальная, по типу dropbox, индикация активности. Для прочих версий есть пристойный и полностью функциональный web-ui. Любой каталог в любом месте вашего диска можно добавить в btsync в пару кликов и назначить этому каталогу “Shared secret” (можно ввести руками либо сгенерировать автоматически). Этот shared secret является уникальным ключем к вашему каталогу без знания которого синхронизация невозможна. Все, что btsync передает/принимает защищено этим ключем и AES 256bit шифрованием. Тут наверняка возникнет вопрос о том, насколько надежна подобного рода защита. Действительно, вместо привычного имени и пароля тут вроде только пароль. Кроме того, никаких следов 2х факторной авторизации тут тоже нет, но не смотря на это, степень защищенности велика и случайно или намеренно подобрать ваш Shared secret практически невозможно. На форуме btsync этот вопрос поднимался многократно и может почитать детали тут, или тут или там.

Есть три вида расшаривания - полное, только для чтения и одноразовое в варианте для полного доступа и для чтения. Т.е. не три а целых четыре варианта. С полным видимо все понятно - каждый, у кого есть shared secret полного доступа может делать с данными все, что угодно - добавлять, удалять и менять. Да, и конечно, в каждом расшареном каталоге может быть любой глубины структура, т.е. подкаталоги тоже поддерживаются. И второе - расшареных каталогов может быть больше одного. Не уверен, сколько их может быть максимально, но одна из моих RPi раздает 9 разных каталогов с подкастами.

В варианте “только для чтения” тоже все вполне ожидаемо - вводите read-only shared secret (его можно найти кликнув на Folders/Advanced) и получаете себе копию данных только для чтения. Никакие модификации файлов в этом случае не пройдут и такой способ отлично работает для доставки и “широковещания” контента. Я так, например, раздаю подкасты слушателям и электронные книги у себя в рабочей команде.

Вариант одноразового расшаривания на самом деле интересная штука когда генерируется секрет для одного использования в течении 24 часов. Я пока туманно представляю, зачем оно мне может понадобится, но например, если хочется раздавать/расшаривать нечто и контролировать при этом список раздачи - эти одноразовые секреты наверное будут очень в тему.

Синхронизаця файлов происходит после того, как завершена начальная индексация. Этот процесс для больших каталогов может занять время, однако это несравнимо быстрее подобной процедуры в дропбоксе. Даже самый мелкий из моих компьютеров (RPi) завершил индексациию всех подкастов (около 35Г) меньше чем за час. На нормальном компьютере это конечно происходит гораздо быстрее. После этого все ваши железки начинают делится файлами и поддерживают это домшанее облако в актуальном состоянии.

Скорость передачи зависит от того, сколько участников в вашем личном облаке. Как и при использовании обычных торрентов, тут происходит обмен данными одновременно с многими компьютерами. В моей домашней сети с btsync живут 3 мака и 2 RPi и после добавления файлов на один из них я могу наблюдать как прочие компьютеры начинают получать файлы сначала от источника изменений, а потом, по степени доставки на другие машины в сети, и с этих машин. Т.е. на практике все это работает не просто быстро, но очень быстро. Я не проводил замеров с секундомером в руке, но по ощущениям это все работает сильно быстрее чем через Dropbox.

С точки зрения загрузки CPU и дисковой активности в последних версиях btsync наблюдается постоянное и неуклонное улучшение и на любых, относительно современных компьютерах, активность BitTorrent Sync мало заметна и не мешает нормальной работе. На моем самом старом iMac c2d в режиме ожидания btsync вообще менее 1% cpu, а в режиме синхронизации не более 15-20% от одного ядра. Даже на RPi BitTorrent Sync вполне сносно работает и последние версии позволяют использовать этот мини-компьютер в качестве полноценного участника вашего домашнего облака. Кстати, все подкасты через btsync раздает именно RPi с подключенным внешним диском и справляется с этой задаче на отлично.

Еще пара слов для параноиков. Из btsync можно сделать полностью закрытую систему. Я не помню, как там по умолчанию, но если отключить все “Use …” и “Search …” опции и задать список ваших машинок в “Use predefined hosts” то BitTorrent Sync будет работать совершенно локально не отдавая ничего в злобный и опасный интернет. Но даже если этого всего не сделать, то ваши файлы все равно не окажутся на серверах btsync и, если верить тому что они утверждают, никакие данные из ваших файлов у них не хранятся. По моему мнению, лучше принять меры и со своей стороны если вас очень заботит неприкосновенность данных. Я именно так и поступил для всех персональных данных - отменил все опции выхода в сеть и вообще закрыл доступ btsync в большой мир. Скорее всего, эти меры черезмерны, но мне так спокойней.

Сравнивать BitTorrent Sync с DropBox или Seafile лоб-в-лоб наверное не совсем честно, так как BitTorrent Sync не делает кое-что из того, чем хорош DropBox/Seafile. Тут не возможности послать кому-либо ссылку на конкретный файл в облаке, нет никакой версионности, никакой встроенной работы над общими документами и пока нет мобильного клиента (он в процессе разработки/тестирования). Да, BitTorrent Sync выглядит более узким решением, но я не люблю сложные комбайны и предпочитаю простые решения. Так у меня для быстрого расшаривания используется прелестный CloudApp, а для версионности и резервных копий - Time Machine. Все это прекрасно сосуществует с BitTorrent Sync и не вызывает у меня никаких неудобств, но наоборот - ощущение правильности такого подхода.

Если смотреть на BitTorrent Sync как на инструмент доставки данных, то в умелых руках он может много где пригодится. Люди уже строят вокруг него социальные сети, локальные интранеты, чаты и форумы и прочее разное. Нет никакой проблемы построить на его базе простое, но более чем настоящее облачное хранилище с данными где-то в S3 и бэкапами в Glacier.

Поддержка у BitTorrent Sync очень достойная и с готовностью принимает и реагирует на отчеты об ошибках. Починки выходят быстро, проблемы признаются и ощущается желание разработчиков довести продукт до идеального состояния.

Из плохого (долго думал, что у нас плохо) могу только попенять на то, что в ранних версиях были совершенно чудовищные проблемы которые могли вызвать худшее, что подобные системы могут натворить - потерю данных. Но похоже что эти проблемы в прошлом и последнее время я не нахожу ничего, настолько критичного. Последняя неприятность у меня с btsync произошла буквально пару дней назад, когда я попробовал перейти на самую свежую версию и обнаружил, что из за несовместимости протоколов с моей стороны и со стороны многочисленных получателей подкастов, эта версия может вызывать 100% нагрузку на процессор в некоторых случаях. Меньше чем за 2 дня проблема была решена разработчиками и починка доставлена.

Подводя итог: BitTorrent Sync полностью вытеснил из моей домашней сети прочие программы для построения локальных облаков (Seafile и AeroFS) и начал неуклонный процесс переноса того, что хранилось в DropBox на btsync. Я не форсирую этот процесс и вероятно пока полный переход невозможен (многие мобильные программы удобно интегрированы в dropbox), но видимо мне больше не понадобится платный экаунт и того, что у меня есть в бесплатном, хватит с головой.