Как работает syncthing
Перейти к содержимому

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

  • автор:

Установка Syncthing

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

Почему именно Syncthing? Масса плюсов:

Бесплатная, стабильно работает.

Все под вашим контролем. Устанавливаем на нескольких компьютерах, настраиваем какие папки нужно синхронизировать и получаем копию файлов.

Работает весьма быстро, умеет обходить всякие NAT’ы
Поддерживает версионность файлов (есть несколько стратегий)
Можно детально настраивать параметры для каждой папки
Умеет LDAP-авторизацию
Потребляет очень мало RAM & CPU

Может работать как служба (работа тогда идет через веб-интерфейс) или как GUI -клиент (для Windows нужно тогда ставить SyncTrayzor).

Установка на Ubuntu Server

Ставим нужные компоненты:

sudo apt install curl apt-transport-https
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
echo "deb https://apt.syncthing.net/ syncthing release" > /etc/apt/sources.list.d/syncthing.list

Обновляем список пакетов и ставим:

sudo apt-get update sudo apt-get install syncthing

После установки проверяем версию:

$ syncthing --version

Увеличиваем лимиты системы

Если планируется хранить большое количество файлов, необходимо увеличить лимит, иначе будем получать предупреждение в веб-интерфейсе и синхронизация не будет работать:

sudo echo 'fs.inotify.max_user_watches=204800' >> /etc/sysctl.conf sudo sysctl -p

Настройка для запуска

Создаем отдельного пользователя:

sudo useradd -m syncthing

Создаем файл конфигурации для systemd:

Добавляем в него строки:

[Unit] Description=Syncthing - Open Source Continuous File Synchronization for %I Documentation=man:syncthing(1) After=network.target [Service] User=%i ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0 Restart=on-failure SuccessExitStatus=3 4 RestartForceExitStatus=3 4 [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload

Настраиваем запуск службы, чтобы запускалась от определенного пользователя должно быть в виде: systemctl start syncthing@$USER т.е. в нашем случае:

sudo systemctl start syncthing@syncthing

Включаем автоматический запуск службы при загрузке системы:

sudo systemctl enable syncthing@syncthing

Доступ через веб-интерфейс

Доступ к управлению через браузер по адресу: http://xxx.xxx.xxx.xxx:8384/ где xxx.xxx.xxx.xxx — IP или FQDN-имя

Безопасность

Крайне желательно закрыть доступ к админке паролем: Действия → Настройки → Интерфейс и заполнить поля «Имя пользователя для доступа к панели управления», «Пароль для доступа к панели управления». Так же желательно включить «Использовать HTTPS для панели управления» для работы по безопасному HTTPS. Нужно обратить внимание что по умолчанию используется самоподписанный сертификат и браузер попросит подтверждение.

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

Установка на Windows

Установка на Windows возможна двумя способами:

установка пакета SyncTrayzor который включает в себя Syncthing и графический клиент
установка в виде службы

Установка в виде SyncTrayzor проста: скачиваем пакет, запускаем, Далее-Далее-Далее и все работает. Минус данного решения: если установка производится на сервер или многопользовательский клиент у каждого пользователя будет запускаться GUI -клиент. Это далеко не всегда нужно, поэтому рассмотрим установку в виде службы.

Загружаем пакет для соответствующей платформы (x86 или x64), распаковываем в папку C:\Program Files\Syncthing

Можно установить как сервис при помощи PowerShell как описано тут: Windows: создаем и удаляем сервис из Powershell или с помощью старого доброго NSSM.

При помощи утилиты NSSM https://nssm.cc/ регистрируем службу:

Запускаем команду

nssm.exe install Syncthing

Записки программиста

Syncthing — бесплатное приложение с открытым исходным кодом, написанное на языке Go, и представляющее собой standalone замену Dropbox, Google Drive и подобным облачным хранилищам. Вы ставите Syncthing, скажем, на ноутбуке, мобильном телефоне и на сервере в DigitalOcean. Указываете путь до каталогов, которые хотите синхронизировать. Теперь при изменении файлов на ноутбуке аналогичные изменения магическим образом происходят и на сервере, а также в мобильном телефоне. Клиент Syncthing доступен под все мыслимые платформы, включая Windows, Linux, FreeBSD, MacOS, iOS и Android. В этой заметке мы рассмотрим пример использования Syncthing под Ubuntu Linux.

Для начала установим Syncthing на сервере. Управление приложением осуществляется через веб-инетрфейс, доступный на порту 8384. Поэтому для сервера в ~/.ssh/config можно сразу дописать что-то вроде:

LocalForward 8385 localhost:8384

Затем выполняем на сервере команды:

curl -s https: // syncthing.net / release-key.txt | \
sudo apt-key add —
echo «deb http://apt.syncthing.net/ syncthing release» | \
sudo tee / etc / apt / sources.list.d / syncthing.list
sudo apt-get update
sudo apt-get install syncthing

Готовим каталог, где будут хранится все настройки Syncthing:

mkdir syncthing
cd syncthing
touch run.sh
chmod u+x run.sh

/ usr / bin / syncthing -no-browser -home = / home / eax / syncthing

Запускаем screen, в нем запускаем run.sh, делаем detach. Конечно, при желании можно написать и init.d скрипт, но я не стал так заморачиваться. Дело в том, что этом же сервере у меня крутится VPN. В случае перезапуска сервера мне все равно приходится заходить на него и запускать VPN руками, так как для его запуска требуется знать пароль от сертификата. Мне нет большой разницы, перезапускать руками условно раз в год один сервис или два.

На своей машине идем на http://localhost:8385/ и видим красивую веб-мордочку:

Веб-интерфейс Syncthing

У вас, конечно, поначалу она будет выглядеть немного не так. Ведь еще нужно добавить каталоги, которые вы хотели бы синхронизировать (это не тот каталог, который мы создавали ранее!). Ну и, конечно же, добавить устройства.

На ноутбуке у меня тоже Ubuntu, поэтому настройка там выглядит точно так же. Только вместо screen я воспользовался GUI-клиентом к Syncthing под названием syncthing-gtk. Штука эта поначалу показалось мне немного глюкавой, но со второй или третей попытки мне удалось настроить ее, как нужно. Дело в том, что по умолчанию syncthing-gtk ищет GUI API на порту 8080. Когда я изменил настройки Syncthing соответствующим образом, все заработало. Теперь при изменении файлов у меня появляются нотификации, а в трее постоянно висит иконка, свидетельствующая о том, что Syncthing работает:

Выпадающее меню syncthing-gtk

Добавление устройств и каталогов делается очевидным образом через GUI- и/или Web-интерфейс, поэтому здесь я на них подробным образом не останавливаюсь.

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

Дополнение: Также вместо использования syncthing-gtk вы можете прописать Syncthing на автозапуск, просто создав файл ~/.config/upstart/syncthing.conf примерно такого содержания:

start on desktop-start
stop on desktop-end
env STNORESTART=yes
respawn
exec /home/eax/syncthing/run.sh

В заключение хочется отметить следующее:

  • Подумайте, как это круто — пять минут работы, и в нашей жизни становится одним SaaS’ом меньше;
  • Перед Syncthing пробовал использовать обычный rsync, но в случае переименования файлов и каталогов он их перезаливает полностью;
  • Заметьте, что Syncthing для запуска и работы не требуются права суперпользователя;
  • Так как Syncthing написан на Go, он распространяется в виде одного бинарника, так что для установки права суперпользователя на самом деле тоже не нужны;

А используете ли вы Syncthing и если все еще нет, то почему? 🙂

Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.

Все в порядке, но.

Этот текст мало кто будет читать и мы можем написать здесь все, что угодно, например.
Вы живете в неведении. Роботы уже вторглись в нашу жизнь и быстро захватывают мир, но мы встали на светлый путь и боремся за выживание человечества. А если серьезно, то.

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

Если это ваш частный компьютер и вы пытаетесь зайти на сайт, например, из дома — мы рекомендуем вам проверить ваш компьютер на наличие вирусов.

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

  • © 2005-2023, «4PDA». 4PDA® — зарегистрированный товарный знак.

Syncthing – свободная кроссплатформенная система синхронизации данных

Syncthing

Каждый день мы используем в процессе своей работы и досуга множество различных электронных устройств: мобильные телефоны, планшеты, телевизоры, и т. д. Но как легко, а главное безопасно синхронизировать данные между ними? В этом случае поможет свободная, кроссплатформенная система синхронизации данных с открытым исходным кодом для Linux, Android, macOS и Windows – Syncthing.

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

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

Установка

Syncthing работает на всех популярных стационарных и мобильных платформах. Порядок установки для самых распространённых из них я приведу ниже.

Linux

Debian, Ubuntu, Linux Mint

Для Debian, Ubuntu и основанных на них дистрибутивов есть сервис apt.syncthing.net, откуда можно установить Syncthing с помощью штатного пакетного менеджера Apt:

curl -s https://syncthing.net/release-key.txt | sudo apt-key add - echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list sudo apt update sudo apt install syncthing
Arch Linux, Manjaro Linux

Syncthing есть в штатных репозиториях Arch/Manjaro Linux. Устанавливается как обычно:

sudo pacman -S syncthing

Так же можно установить пакет syncthing-gtk – графический интерфейс Syncthing на GTK+:

sudo pacman -S syncthing-gtk

Android

Syncthing для Android есть в Google Play.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *