Как я использовал BitTorrent Sync между офисами в РФ и Китае

софт

Однажды в нашей компании наступил момент, когда встала необходимость обмениваться довольно тяжёлыми файлами — макетами продукции и упаковки (100–500 мегабайт) между офисами в Москве, Екатеринбурге и офисом в провинции Чжэцзян, КНР. Сложность была в катастрофически низкой скорости и надёжности связи РФ — Китай.

Когда я обратил внимание на проблему, царил полный разброд и шатание: это и передача файлов в виде многотомных архивов по 9 мегабайт через корпоративную почту с сервером в Екатеринбурге, и публичные файлообменники с тоннами рекламы, и передача через Skype. Продвинутые сотрудники с переменным успехом использовали Dropbox (пока Великий Китайский Файервол не начал его блокировать) и Яндекс.Диск.

Все эти способы объединяло одно: низкая скорость, обрывы и блокировки со стороны китайского правительства. Макет объёмом 120 мегабайт мог качаться полтора часа и оборваться на середине. Возвращаться к эпохе Flashget не хотелось. При этом гарантированный канал китайского провайдера составлял 10 Мбит/с, и внутри Китая, разумеется, такие скорости выдавались без проблем.

В процессе поиска решения этой проблемы, а также проблемы медленной корпоративной почты в Китае, обсуждалась даже установка спутниковой тарелки и подключение к российскому спутнику. Впрочем, невероятные тарифы поумерили пыл. С почтой более-менее разобрались путём настройки промежуточного ящика на стороннем стабильно работающем сервисе (в нашем случае — Яндекс.Почта; западные сервисы в Китае любят блокировать, а китайские почтовики считают не-китайскую почту спамом). А вот с передачей файлов было не всё так гладко. У FTP не устроила скорость, VPN до российского сервера тоже не был стабильным.

Тут я вспомнил о BitTorrentSync.

Условия

Итак, дано:

  1. Три офиса: 2 в РФ, 1 в КНР;
  2. Три-пять сотрудников в российском офисе (стационарные машины) и шесть-семь в китайском (ноутбуки), которым нужно было обмениваться файлами между собой, вся инфраструктура на Windows XP, 7, 8;
  3. Стоечные серверы во всех офисах, которые использовались в том числе в качестве локальной файлопомойки;
  4. Множество клиентских машин во всех офисах, которым напрямую не было необходимости в обмене файлами;
  5. Великий Китайский Файервол, внезапный и беспощадный.

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

Установка, проблемы, решения

  1. Кроме собственно пользователей, которым это было надо, Sync установили всем, кому он не мешал (т. е. на стационарные компьютеры с относительно большим объёмом свободного места на жёстком диске) в режиме read-only — это повысило скорость и надёжность передачи между пирами внутри сети;
  2. Дополнительно поставили клиент тем, кто использовал ноутбук (опять же с достаточным свободным местом), также в read-only — т. о. пользователи, подключаясь через другие сети, увеличивали живучесть всей системы в случае проблем с внешней связью у офисного провайдера;
  3. Также Sync установили на серверы во всех офисах, чтобы файлы были доступны в виде сетевой папки для тех, кому нельзя поставить Sync;
  4. В правилах маршрутизации пришлось последовать совету с форума и открыть порты 3000 и 9999, чтобы синхронизация начиналась быстрее;
  5. Параметр sync_max_time_diff установили на 0, поскольку все пользователи находились в разных часовых поясах.

Столкнулись и с некоторыми трудностями:

  1. Sync по умолчанию сохраняет все удалённые файлы в скрытой директории .SyncArchive, которая при активном использовании обмена быстро разрослась до сотни гигабайт, забив память некоторых устройств в ноль (очевидно, к чему приводит отсутствие свободного места на системном диске ноутбука). Надеюсь, в будущих релизах сделают возможность жёсткой регулировки максимального объёма этой папки;
  2. Попытка передать файл весом 8 гигабайт также привела к неконтролируемому засорению компьютеров. Оптимальным размером в нашем случае оказались файлы 50–500 мегабайт;
  3. Хоть процесс обмена файлами для конечных пользователей упрощён до предела, написать предупреждение всё-таки пришлось:

Обращаю внимание, что удаление файла одним из участников повлечёт удаление файла у всех остальных — не занимайтесь вредительством! Если нужно удалить с компьютера все файлы обменной папки, то предварительно нужно удалить папку из программы BitTorrent Sync (кнопка «Удалить папку»).

Файлы передаются между компьютерами напрямую, без промежуточных серверов.

Следовательно, для передачи файла в сети должны быть хотя бы два участника нашей группы. Когда один из участников получит файл, он «по цепочке» передаёт его остальным. Чем больше в группе участников — тем более надёжно и быстро передаются файлы.

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

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

С уважением,
Имярек

Несомненно, программа всё ещё находится в стадии беты, но она уже вполне пригодна к использованию.

Плюсы и минусы

Среди достоинств следует отметить следующие:
0. Бесплатно;
1. Для пользователя процесс передачи файла прозрачен и прост: нужно только скопировать файл в нужную папку;
2. В наших условиях в целом быстрее и надёжнее, чем доступные облачные хранилища;
3. Быстрая скорость обмена внутри офиса.

И, конечно, недостатки:
1. Определённые усилия для настройки софта у каждого клиента;
2. Некоторое время на то, чтобы объяснить сотрудникам, почему, удалив файл у себя, он удаляет его у всех своих коллег;
3. Бета: присутствуют редкие баги вроде спонтанной остановки синхронизации, от чего помогает перезагрузка системы;
4. Для параноиков — пока не opensource.

Итого

Удалось достичь стабильного обмена файлами между РФ и Китаем на скорости в р-не 120 кБайт/с, что на голову лучше 10–12 кБайт/с, которые мы имели ранее. Просто сравните до...

... и после:

Для подключения пользователей при отсутствии специалистов написал мини-инструкцию:

Инструкция по подключению папки обмена:

(если какие-то пункты вызывают затруднение, пожалуйста, обратитесь к специалистам)
0. На жёстком диске компьютера должно быть не менее 25 гигабайт свободного места.
1. Создайте в корневом каталоге диска папку GC_SHARE (например, D:\GC_SHARE или C:\GC_SHARE).
2. Внутри GC_SHARE создайте папки «ВИДЕО», «МАКЕТЫ», «ИДЕИ», «ФОТО», «ДОКУМЕНТЫ» (по темам, обмен которыми вам необходим).
3. Скачайте программу BitTorrent Sync.
4. Запустите скачанную программу, установите в папку по умолчанию.
5. Запустите установленную программу.
6. Подключите созданные папки к программе следующим образом:
6.1 В программе BitTorrent Sync во вкладке «Папки» нажмите кнопку «Добавить папку».
6.2 В появившемся окне во второй строчке пропишите путь до папки (с помощью кнопки «Выбрать», например D:\GC_SHARE\МАКЕТЫ), в первой строчке вставьте соответствующий код из таблицы ниже:

МАКЕТЫ
AV6LDEXXXXXXXXXXXXXXXXXXXX64NVJDJCX3II

ФОТО
ALVVVQKXXXXXXXXXXXXXXXXXXXXOB622CO42O

ДОКУМЕНТЫ
A6E4EECXXXXXXXXXXXXXXXXXXXXRA44ISVTDZ3

6.3 Повторите со всеми папками.
7. В программе откройте вкладку «Настройки»:
7.1 В поле «Имя» напишите своё имя латинскими буквами (например, VLADIMIR).
7.2 Установите все галочки в активное положение, кроме «Уведомлять об окончании загрузок».
7.3 В полях «Ограничить скорость загрузки» и «Ограничить скорость отдачи» установите значения 5000 и 5000.
8. Нажмите кнопку «Дополнительно»:
8.1 Найдите пункт sync_max_time_diff, нажмите на него левой кнопкой мыши, в поле снизу замените значение 600 на 0, нажмите кнопку «Задать» и закройте окно; нажмите «Применить».

Настройка завершена.

Особенности работы

Файлы передаются между компьютерами напрямую, без промежуточных серверов. Следовательно, для передачи файла в сети должны быть хотя бы два участника нашей группы. Когда один из участников получит файл, он «по цепочке» передаёт его остальным. Чем больше в группе участников — тем более надёжно и быстро передаются файлы.

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

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

Обращаю внимание, что удаление файла одним из участников повлечёт удаление файла у всех остальных — не занимайтесь вредительством! Если нужно удалить с компьютера все файлы обменной папки, то предварительно нужно удалить папку из программы BitTorrent Sync (кнопка «Удалить папку»).

С уважением,
Имярек

Надеюсь, описание живого использования системы подкинет вам новых идей.

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

А как вы используете Sync в жизни?

UPD1: Пока пост находился в черновиках, вышла ещё более новая версия — в ней уже добавили возможность не хранить копии файлов в .SyncArchive и многое другое.

UPD2: Новая версия откровенно захирела. Изменился интерфейс (теперь на движке IE11), исчезла поддержка Windows XP, изменился принцип обмена ключами (сами ключи запрятали в глубины интерфейса, снаружи — только ссылки). В целом программа стала работать слишком плохо, и, к сожалению, я больше не могу рекомендовать её к использованию.

UPD 3: Программа снова стала нормальной. Рекомендую использовать :-)