Syncthing: синхронизация файлов между устройствами без облака

Данные хранятся только на ваших устройствах — никаких посредников!

Syncthing: синхронизация файлов между устройствами без облака

Облачные хранилища — удобная штука: и если не хватает места на устройстве, и как способ сохранить доступ к важным файлам и документам из практически любого места. Вот только бесплатно сервисы редко дают больше 15 ГБ (хотя есть исключения). Есть и вопрос к приватности: что Google или «Яндекс» делает с файлами, которые вы положили на «Диск»?

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

Как работает Syncthing

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

Если синхронизируемые устройства находятся в одной сети, они находят друг друга сами. А если в разных, то включаются публичные серверы обнаружения, которые помогают найти адреса нужных девайсов. Сами файлы через эти серверы не проходят. В крайнем случае, если прямое соединение невозможно, Syncthing использует ретрансляционные серверы. Трафик зашифрован по протоколу TLS, так что содержимое защищено. 

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

Как установить Syncthing на компьютер или смартфон

По умолчанию Syncthing не очень-то дружелюбен к среднестатистическому пользователю: для работы на компьютере требуется установить консольную утилиту. Но сообщество давно развивает более удобные решения.

Windows. Для операционной системы Microsoft команда Syncthing рекомендует использовать утилиту Syncthing Windows Setup. Вот как её установить:

  1. Перейдите на GitHub проекта Syncthing Windows Setup и загрузите файл с расширением .exe.
  2. Запустите скачанный файл. На экране появится мастер установки: согласитесь с условиями использования, выберите директорию установки, при желании отключите автозапуск. 
  3. Дождитесь завершения установки. Если вы не меняли настройки по умолчанию, утилита запустит локальную веб-страницу по адресу 127.0.0.1:8384. 
  4. При первом запуске Syncthing попросит разрешение делиться анонимными данными об использовании. Нажмите «Да» или «Нет» в зависимости от предпочтений. 

macOS. Своя кастомная утилита есть и для Mac — syncthing-macos:

  1. Перейдите на GitHub проекта и загрузите файл с расширением .dmg.
  2. Установите его как обычное приложение — распакуйте образ и перетащите иконку в папку Applications («Программы»).
  3. В строке меню появится значок утилиты со статусом работы Syncthing. Чтобы открыть панель управления Syncthing, выберите Open — запустится локальная веб-страница по адресу 127.0.0.1:8384. Для автоматического запуска программы при запуске компьютера выберите Preferences → Start at Login.
  4. При первом запуске Syncthing попросит разрешение делиться анонимными данными об использовании. Нажмите «Да» или «Нет» в зависимости от предпочтений.
Из строки меню можно открыть веб-интерфейс Syncthing или перезапустить синхронизацию
Из строки меню можно открыть веб-интерфейс Syncthing или перезапустить синхронизацию

Также для macOS есть приложение Synctrain — его можно скачать из App Store при условии, что у вас не российский аккаунт Apple.

Android. Процесс установки несложный:

  1. Загрузите приложение Syncthing-Fork из Google Play.
  2. Запустите программу, нажмите «Продолжить». На следующем экране выберите «Выдать доступ» → «Разрешить доступ к управлению всеми файлами».
  3. Чтобы приложение могло синхронизировать документы в фоне, необходимо отключить для него оптимизацию батареи. Нажмите «Выдать доступ» → «Разрешить».
  4. Чтобы приложение могло синхронизировать документы только в конкретных сетях Wi-Fi, ему понадобится доступ к местоположению. Этап можно пропустить или нажать «Выдать доступ» → «Разрешать всегда».
  5. Выдайте утилите разрешение на отправку уведомлений. После вы попадёте на домашний экран Syncthing-Fork.

iOS. Мобильные операционные системы Apple строго ограничивают фоновую активность приложений, из-за чего Syncthing на iOS и iPadOS не синхронизирует файлы в реальном времени — только при ручном запуске или во время ограниченных по времени окон. 

Для iOS есть две популярные утилиты: вышеупомянутый Synctrain и Möbius Sync. Последний доступен в российском App Store, но давно не обновлялся и требует заплатить 449 рублей за безлимитную синхронизацию файлов. Поэтому рассмотрим настройку на примере Synctrain — надеемся, у большинства уже есть иностранный аккаунт Apple для загрузки заблокированных программ.

  1. Скачайте Synctrain из App Store как обычно.
  2. Запустите приложение и пройдите через экраны с объяснением принципа работы Syncthing, нажимая на кнопку I understand!
  3. На экране Do you want to use Syncthing services выберите Use Syncthing services.
  4. Выдайте приложению доступ на поиск устройств в локальных сетях.

Как настроить Syncthing

Приложение Syncthing запускает локальный веб-сервер по адресу 127.0.0.1:8384. Здесь находятся основные настройки, а также статус синхронизации подключённых устройств и папок.

Первое, что стоит сделать — защитить интерфейс паролем. По умолчанию веб-интерфейс открыт без авторизации, поэтому при некоторых настройках любой пользователь в той же сети может зайти в Syncthing:

  1. Откройте «Действия» → «Настройки» → «Интерфейс».
  2. Введите логин и пароль в поля «Имя пользователя для доступа к панели управления» и «Пароль для доступа к панели управления».
  3. Нажмите «Сохранить».

Как добавить устройство. Каждый узел в Syncthing имеет уникальный ID. Чтобы найти идентификатор текущего устройства, в веб-интерфейсе выберите «Действия» → «Показать ID». 

Чтобы связать два устройства: 

  1. На первом устройстве нажмите «Добавить удалённое устройство» в правой колонке. 
  2. Вставьте ID второго устройства. Если оба в одной сети, ID появится в подсказках автоматически. 
  3. Дайте устройству понятное имя — например, «Телефон» или «Рабочий ноутбук». 
  4. На вкладке «Предоставление доступа» можно сразу выбрать, какие папки открыть этому устройству. 
  5. Сохраните и откройте интерфейс на втором устройстве — там появится уведомление с запросом, которое следует принять для завершения сопряжения.

Как добавить папку. Настройка синхронизируемых директорий тоже происходит через веб-интерфейс Syncthing:

  1. Нажмите «Добавить папку» в левой колонке.
  2. В пункте «Ярлык папки» укажите человекопонятное название, например «Документы».
  3. Введите «Путь к папке» — физический путь на диске. На Android удобнее выбрать через браузер файлов, на компьютере — скопировать путь до директории через стандартный файловый менеджер.
  4. На вкладке «Предоставление доступа» выберите, с какими устройствами синхронизировать эту папку.
  5. Нажмите «Сохранить».
  6. На сопряжённых устройствах появится запрос на синхронизацию новой папки. Интерфейс уточнит, в какой раздел следует положить директорию локально.

Что ещё можно настроить. Важный параметр папки — её тип. По умолчанию используется режим «Отправить и получить», когда директория синхронизируется в обе стороны. Отредактировали на одном устройстве — изменения появятся на всех.

Ещё два варианта:

  • «Только отправить» — устройство отдаёт файлы, но не принимает изменения от других. Удобно для папки с фотографиями на телефоне: телефон отправляет, компьютер получает, но случайное удаление на компьютере не удалит оригинал.
  • «Только получить» — устройство принимает файлы, но само ничего не меняет. Подходит для резервного хранилища.

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

Syncthing поддерживает игнорирование файлов и папок по шаблону названия. В настройках папки есть раздел «Шаблоны игнорирования», где указываются нежелательные паттерны. Утилита не будет синхронизировать все документы, которые им соответствуют. Например, по шаблону foo* Syncthing пропустит все файлы, названия которых начинаются на foo. Подробности по синтаксису шаблонов игнорирования есть на сайте Syncthing

В настройках Syncthing-Fork на Android не помешает выбрать, при каких условиях следует синхронизировать папки. Например, можно оставить синхронизацию только при подключении к Wi-Fi и только во время зарядки, чтобы экономить трафик и заряд. Опции находятся в разделе «Режимы работы».

На iOS всё чуть сложнее из-за ограничений платформы. В Synctrain тоже есть настройка активности: для этого нажмите на иконку настроек в верхней панели и перейдите в раздел Background Synchronization. Здесь можно включить уведомление, если сервис давно не проводил синхронизацию: это полезно, когда операционная система не даёт Synctrain доступ к фоновой активности.