Давно не видел статей о BitTorrentSync, и очень удивляюсь: ведь это такой полезный инструмент. Буквально на днях вышла новая версия*, и я решил рассказать, как применил это решение на работе.
Начало
Однажды в нашей компании наступил момент, когда встала необходимость обмениваться довольно тяжёлыми файлами — макетами продукции и упаковки (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. Хоть процесс обмена файлами для конечных пользователей упрощён до предела, написать предупреждение всё-таки пришлось — см. спойлер:
Файлы передаются между компьютерами напрямую, без промежуточных серверов.
Следовательно, для передачи файла в сети должны быть хотя бы два участника нашей группы. Когда один из участников получит файл, он «по цепочке» передаёт его остальным. Чем больше в группе участников — тем более надёжно и быстро передаются файлы.
Максимальная скорость передачи файлов — внутри локальной сети (например, в одном офисе), минимальная — между городами.
Папки синхронизируются с определённым интервалом (несколько минут), поэтому передача файлов может начинаться не мгновенно, а с некоторой задержкой.
Достаточно скопировать файл в соответствующую папку, и он будет загружаться на компьютеры ко всем участникам.
Программу при необходимости можно установить и настроить на домашнем компьютере или ноутбуке — файлы будут загружаться и туда.
С уважением,
Имярек
Несомненно, программа всё ещё находится в стадии беты, но она уже вполне пригодна к использованию.
Плюсы и минусы
Среди достоинств следует отметить следующие:
0. Бесплатно;
1. Для пользователя процесс передачи файла прозрачен и прост: нужно только скопировать файл в нужную папку;
2. В наших условиях в целом быстрее и надёжнее, чем доступные облачные хранилища;
3. Быстрая скорость обмена внутри офиса.
И, конечно, недостатки:
1. Определённые усилия для настройки софта у каждого клиента;
2. Некоторое время на то, чтобы объяснить сотрудникам, почему удалив файл у себя, он удаляет его у всех своих коллег;
3. Бета: присутствуют редкие баги вроде спонтанной остановки синхронизации, от чего помогает перезагрузка системы;
4. Для параноиков — пока не opensource;
Итого
Удалось достичь стабильного обмена файлами между РФ и Китаем на скорости в р-не 120 кБайт/c, что на голову лучше 10-12 кБайт, которые мы имели ранее. Просто сравните до…
… и после:
Для подключения пользователей при отсутствии специалистов, написал мини-инструкцию, тоже под спойлером:
Инструкция по подключению папки обмена:
(если какие-то пункты вызывают затруднение, пожалуйста, обратитесь к специалистам)
0. На жёстком диске компьютера должно быть не менее 25 гигабайт свободного места.
1. Создайте в корневом каталоге диска папку GC_SHARE (например, D:GC_SHARE, или C:GC_SHARE)
2. Внутри GC_SHARE создайте папки «ВИДЕО», «МАКЕТЫ», «ИДЕИ», «ФОТО», «ДОКУМЕНТЫ» (по темам, обмен которыми вам необходим);
3. Скачайте программу BitTorrent Sync — labs.bittorrent.com/experiments/sync/win-download.html
4. Запустите скачанную программу, установите в папку по умолчанию;
5. Запустите установленную программу.
6. Подключите созданные папки к программе следующим образом:
6.1 В программе BitTorrent Sync во вкладке Папки нажмите кнопку Добавить папку;
6.2 в появившемся окне во второй строчке пропишите путь до папки (с помощью кнопки Выбрать, например D:GC_SHAREМАКЕТЫ), в первой строчке вставьте соответствующий код из таблицы ниже:
МАКЕТЫ
AV6LDEXXXXXXXXXXXXXXXXXXXX64NVJDJCX3II
ФОТО
ALVVVQKXXXXXXXXXXXXXXXXXXXXOB622CO42O
ДОКУМЕНТЫ
A6E4EECXXXXXXXXXXXXXXXXXXXXRA44ISVTDZ3
6.3 повторите со всеми папками;
7. в программе откройте вкладку Настройки:
7.1 в поле Имя напишите своё имя латинскими буквами (например ZHDANOV VLADIMIR)
7.2 установите все галочки в активное положение, кроме Уведомлять об окончании загрузок;
7.3 в полях Ограничить скорость загрузки и Ограничить скорость отдачи установите значения 5000 и 5000;
8. Нажмите кнопку Дополнительно:
8.1 найдите пункт sync_max_time_diff, нажмите на него левой кнопкой мыши, в поле снизу замените значение 600 на 0, нажмите кнопку Задать и закройте окно; нажмите Применить.
Настройка завершена.
Особенности работы:
Файлы передаются между компьютерами напрямую, без промежуточных серверов.
Следовательно, для передачи файла в сети должны быть хотя бы два участника нашей группы. Когда один из участников получит файл, он «по цепочке» передаёт его остальным. Чем больше в группе участников — тем более надёжно и быстро передаются файлы.
Максимальная скорость передачи файлов — внутри локальной сети (например, в одном офисе), минимальная — между городами.
Папки синхронизируются с определённым интервалом (несколько минут), поэтому передача файлов может начинаться не мгновенно, а с некоторой задержкой.
Достаточно скопировать файл в соответствующую папку, и он будет загружаться на компьютеры ко всем участникам.
Программу при необходимости можно установить и настроить на домашнем компьютере или ноутбуке — файлы будут загружаться и туда.
Обращаю внимание, что удаление файла одним из участников повлечёт удаление файла у всех остальных — не занимайтесь вредительством! Если нужно удалить с компьютера все файлы обменной папки, то предварительно нужно удалить папку из программы BitTorrent Sync (кнопка Удалить папку).
С уважением,
Имярек
Надеюсь, описание живого использования системы подкинет вам новых идей.
Дома я тоже использую Sync: для бэкапа фотографий с телефона, архивации записей телефонных разговоров, организованной закачки торентов на импровизированном медиасервере, бэкапа рабочих файлов на файлохранилище… Но это уже совсем другая история.
А как вы используете Sync в жизни?
P.S.: Пока пост находился в черновиках, вышла ещё более новая версия — в ней уже добавили возможность не хранить копии файлов в .SyncArchive, и многое другое.
Автор: wtigga