BitTorrent Sync — наш новый фаворит синхронизации

Иван Никитин и партнерыНовостиРазноеBitTorrent Sync — наш новый фаворит синхронизации

Сегодня существует масса способов синхронизации файлов между своими компьютерами: Dropbox, SkyDrive, Google Drive, всякие Яндексы-Шмяндексы и прочая-прочая. Имя им — легион. И сравнивать их между собой я не буду. Мы у себя в компании используем в основном Dropbox и SkyDrive, но…

НО! Все эти сервисы хороши для персонального использования, а как только количество пользователей и объем файлов синхронизации начинает расти — наступают проблемы. Мы столкнулись с тем, что на объемах более 20 – 40 GB и количестве пользователей 5 – 10 все эти способы становятся весьма накладными: $100 в год на пользователя в Dropbox, около $1000 в год на всех при покупке SharePoint (Office 365), а обычный SkyDrive не умеет синхронизировать папки, предоставленные другим пользователем! В общем, пришлось искать другое решение, и мы его нашли:

BitTorrent Sync

http://labs.bittorrent.com/experiments/sync.html

Это синхронизация файлов и папок через BitTorrent среди любого количества пользователей. К несомненным плюсам можно сразу же отнести:

  • Любое число пользователей, причем, чем их больше, тем лучше и быстрее идет синхронизация.
  • Любые, ничем не ограниченные объемы синхронизации
  • Синхронизация любых папок в любом месте на компьютере (и не надо плясать с файловыми ссылками или Junction-связями, как в случае с Dropbox)
  • Бесплатность решения

BTSync

Схема синхронизации очень проста: устанавливаем программу, на закладке Shared Folders нажимаем кнопку [Add].

BTSync new folder

Указываем папку и, если новая папка, нажимаем кнопку [Generate] в строке Secret. Собственно это строка секрета и является идентификатором папки. Если же мы хотим подключится к существующей папке, нужно просто ввести ее секрет, полученный с первой машины. Вот так его можно легко узнать:

BTSync secret

Собственно, все! Программа найдет тех пользователей в онлайн, у кого есть эта папка и вытянет у них файлы.

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

Запуск BTSync на сервере Windows Server 2008 R2

Правда, для запуска BTSync на сервере нужно сделать одно простое телодвижение. Стандартно программа синхронизации запускается в контексте сеанса пользователя, а на сервере ее хорошо бы запу3стить вне зависимости от пользователя, то есть, службой. Делается это просто:

  1. Скопиpyйте файлы instsrv.exe и srvany.exe в папку программы, то есть C:Program Files (x86)BitTorrent Sync (эти файлы берутся из Resource Kit compmgmt.cab srvany.exe, instsrv.exe или нагугливаются)
  2. Откройте командную строку от имени администратора:
    cmd admin
  3. Последовательно введите следующие команды:
    cd C:Program Files (x86)BitTorrent Sync
    instsrv BTSync “C:Program Files (x86)BitTorrent Syncsrvany.exe”
    regedit
  4. В открывшемся редакторе реестра найдите следующий раздел
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesBTSync
  5. Создайте в нем еще один раздел с именем Parameters
  6. В этом разделе создайте параметр (тип REG_SZ) с именем Application и значением
    C:Program Files (x86)BitTorrent SyncBTSync.exe
    BTSync parameters
  7. Убедитесь, что в приложении на закладке Preferences СНЯТА галочка  Start BitTorrent Sync when Windows starts.
  8. Закройте приложение (выйдете из приложения) BTSync
  9. Откройте Администрирование –> Службы и найдите там службу BTSync
  10. Убедитесь, что тип запуска службы стоит Автоматически
  11. На закладке Вход в систему выберите “С учетной записью” и введите свой логин и пароль на сервере
    BTSync service
  12. Все! Запускаем службу BTSync и убеждаемся, что синхронизация работает.

Когда нужно будет изменить настройки BTSync, нужно остановить службу и запустить приложение. Далее меняем настройки, останавливаем приложение и запускаем службу.

Вот примерно так мы решили задачу синхронизации больших объемов данных между удаленными сотрудниками. Вроде бы решили.

комментариев 18

  1. Полезная штуковина. Надо полагать размер одиночного файла тоже без лимита?

  2. как вы решили проблему с конфигурацией? как сконфигурировать клиента не имеющего командной строчки и запущенного как служба?

  3. извените, поспешил с комментарием не дочитав до конца. в нашем случае мы не имеем возможности запускать клиента из под пользователя и соответствено не можем сконфигурировать клиента.

  4. Я бы не спешил рекомендовать клиентом. протокол необкатан и уже найдены серьезные баги. Например, если одна из машин будет в будущим (примерно на 1 час вперед) то btsync начинает сильно колбасить. Они определяют время по timestamp. Его нельзя будет открыть на других машиах и он все время будет откатываться к старой версии. RO клиент при определенных обстоятельствах может получить полный доступ :) Кстати, первый вариант может получится и сам по себе. Есть еще мелкие глюки и баги. Для серьезных документов я пока не рекомендую использовать ButSync.

  5. К сожалению данная инструкция по превращению любой программы в службу Windows неприменима к ОС Win 2k3. У меня после попытки запуска службы btsync из оснастки «Службы» появляется диалоговое окно с ошибкой «Служба btsync на “Локальный компьютер” была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если им нечего делать, например, служба журналов и оповещений производительности».
    Данная проблема решается с использованием программы nssm. Скачиваете с официального сайта, распаковываете её в любой из путей прописанных в переменной окружения %PATH%. Я поместил её в каталог c:windowssystem32 (она портабельна и не требует установки). Далее запускаете командную строку с правами админа и в неё вводите следующее:
    >nssm install btsync
    Далее жмакаете по Enter’у и в появившемся диалоговом окне выбираете программу которую нужно «Демонизировать». Поле с опциями можно не заполнять, поле «Sevice name» заполнится автоматически. Далее «Install service» и наслаждаетесь. У меня синхронизация работает как часы. ;)
    PS.1 Если данную службу нужно удалить, то в той же командной строке набираете
    >nssm remove btsync
    PS2. Синхронизация файлов между двумя и более узлами не будет работать если на них будет рассинхронизация во времени более чем в 600 с. (это значение параметра по умолчанию sync_max_time_diff). Если сервера находятся в разных часовых поясах, и такое часто в жизни бывает, то идём в Preferences->Advanced и устанавливаем параметр sync_max_time_diff в нужное нам значение.
    PS3. В оснастке “Службы” для данной службы в вкладке “Вход в систему” устанавливаете логин и пароль доменного пользователя в контексте которого данная служба будет работать.

  6. Как сделать чтобы на клиентском компьютере всегда была “зеркальная” папка с “сервера”. Даже если на “клиентском” компьютере будет удален какой то файл, необходимо чтобы при очередной синхронизации были восстановлены “удаленные” файлы.

  7. Решилось всё с помощью установки галочки в св-вах папки “Не сохранять изменения файлов”.

    • Павел, удаленный файл помечается и больше не синхронизируется. Его нужно как то из архива достать и он начнет синхронизироваться. Сейчас на русском есть мануалы.

Комментарии закрыты.