Syncthing

Материал из Мои заметки
Перейти к: навигация, поиск
Syncthing

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

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

Syncthing: Установка и настройка в Ubuntu[править]

Установка Syncthing[править]

Установка из официального репозитория[править]

1. Добавьте репозиторий Syncthing:

   sudo apt-get install curl
   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
   

2. Обновите список пакетов:

   sudo apt-get update
   

3. Установите Syncthing:

   sudo apt-get install syncthing
   

4. Запустите Syncthing:

   syncthing
   

Установка через Snap[править]

Если вы предпочитаете использовать Snap, выполните команду:

sudo snap install syncthing

Установка вручную[править]

1. Скачайте последнюю версию Syncthing с [официального сайта](https://syncthing.net/downloads/). 2. Распакуйте архив:

   tar -xzf syncthing-linux-*.tar.gz
   

3. Переместите файлы в нужную директорию:

   sudo mv syncthing-linux-*/syncthing /usr/local/bin/
   

4. Запустите Syncthing:

   syncthing
   

Настройка автозапуска[править]

1. Создайте файл службы:

   sudo nano /etc/systemd/system/syncthing@.service
   

2. Вставьте следующий текст:

   [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 -no-restart -logflags=0
   Restart=on-failure
   SuccessExitStatus=3 4
   RestartForceExitStatus=3 4

   [Install]
   WantedBy=multi-user.target
   

3. Включите и запустите службу:

   sudo systemctl enable syncthing@ваш_пользователь.service
   sudo systemctl start syncthing@ваш_пользователь.service
   

Игнорирование файлов и папок[править]

Чтобы игнорировать файлы или папки, создайте файл .stignore в корне синхронизируемой папки.

Примеры использования .stignore[править]

  • Игнорировать конкретную папку:
  subfolder/
  
  • Игнорировать все файлы с определённым расширением:
  *.tmp
  
  • Игнорировать все файлы и папки, начинающиеся с точки:
  .*
  
  • Игнорировать конкретный файл:
  Пароли Chrome.csv
  

Перезагрузка Syncthing[править]

После изменения .stignore перезагрузите Syncthing: 1. Откройте веб-интерфейс Syncthing (http://localhost:8384). 2. Перейдите в настройки папки. 3. Нажмите "Rescan" (Пересканировать).

Доступ к веб-интерфейсу[править]

После запуска Syncthing откройте в браузере:

http://localhost:8384/

Полезные ссылки[править]

Установка Syncthing в Ubuntu 14[править]

Вариант установки Syncthing без GUI для Ubuntu, от пользователя root качестве службы (daemon) Ubuntu Server 14.04.2 LTS или Ubuntu 14.04.

Все ниже перечисленные действия делаем от суперпользователя:

sudo su

Добавление источника пакетов для Debian/Ubuntu и установка Syncthing[править]

The release channel is updated with full release builds, approximately once a week.

Добавить ключи PGP:

sudo apt install curl -y
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

Add the "release" channel to your APT sources:

echo "deb http://apt.syncthing.net/ syncthing release" | sudo tee /etc/apt/sources.list.d/syncthing.list

Обновление пакетной базы и установка syncthing:

sudo apt update && sudo apt install syncthing -y

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

/usr/bin/syncthing

Первый запуск и настройка Syncthing[править]

Программа запускается командой:

syncthing

После запуска терминал выведет похожую информацию:

[monitor] 23:59:28 INFO: Starting syncthing
[start] 23:59:28 INFO: Generating RSA key and certificate for syncthing...
[ABCDE] 00:00:47 INFO: syncthing v0.11.16 (go1.4.2 linux-arm default) unknown-user@syncthing-builder 2015-07-19 11:34:11 UTC
[ABCDE] 00:00:47 INFO: My ID: 3YTRG4L-LYF32BL-5WGIN5K-N3LQ4RJ-CIRN3LE-YIJKHTY-HTW6MWR-4FECVAC
[ABCDE] 00:00:47 INFO: No config file; starting with empty defaults
[ABCDE] 00:00:47 INFO: Edit /root/.config/syncthing/config.xml to taste or use the GUI
[ABCDE] 00:00:47 INFO: Database block cache capacity 8192 KiB
[ABCDE] 00:00:47 OK: Ready to synchronize default (read-write)
[ABCDE] 00:00:47 INFO: Starting web GUI on http://127.0.0.1:8384/
[ABCDE] 00:00:47 INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or directory
[ABCDE] 00:00:47 INFO: Creating new HTTPS certificate
[ABCDE] 00:00:47 INFO: Generating RSA key and certificate for bananapi...
[ABCDE] 00:00:47 INFO: Completed initial scan (rw) of folder default
[ABCDE] 00:01:08 INFO: Starting local discovery announcements
[ABCDE] 00:01:08 INFO: Starting global discovery announcements
[ABCDE] 00:01:08 INFO: Device ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG is "webserver" at [dynamic]
[ABCDE] 00:01:08 INFO: API listening on 127.0.0.1:8384
[ABCDE] 00:01:18 INFO: New UPnP port mapping: external port 26917 to local port 22000.

Это занимает некоторое время, при первом запуске, так как Syncthing еще создаёт некоторые файлы конфигурации и сертификаты, которые расположены будут тут:

/root/.config/syncthing/

Посмотрим список созданных файлов:

ls -l /root/.config/syncthing/

Терминал выведет похожую информацию:

root@how ~ # ls -l /root/.config/syncthing/
insgesamt 28
-rw-r--r-- 1 root root 1411 Jul 25 00:00 cert.pem
-rw------- 1 root root 2209 Jul 25 00:00 config.xml
-rw-r--r-- 1 root root   33 Jul 25 00:01 csrftokens.txt
-rw-r--r-- 1 root root 1407 Jul 25 00:00 https-cert.pem
-rw------- 1 root root 2455 Jul 25 00:00 https-key.pem
drwxr-xr-x 2 root root 4096 Jul 25 00:00 index-v0.11.0.db
-rw------- 1 root root 2459 Jul 25 00:00 key.pem

На данный момент веб-интерфейс слушает только локальный адрес IP 127.0.0.1. Далее настроим внешний доступ к веб-интерфейсу.

Сначала остановим работу syncthing с помощью CTRL + C или Ctrl-C. И отредактируем конфигурационный файл:

mcedit /root/.config/syncthing/config.xml

В разделе:

<gui enabled="true" tls="false">
    <address>127.0.0.1:8384</address>
    <apikey>xu2Y-Ian-jVkADUWCPZxgVfBd0mQ7TDX</apikey>
</gui>

изменяем 127.0.0.1 на 0.0.0.0, результат:

<gui enabled="true" tls="false">
    <address>0.0.0.0:8384</address>
    <apikey>xu2Y-Ian-jVkADUWCPZxgVfBd0mQ7TDX</apikey>
</gui>

Здесь же меняем tls="false" на tls="true" что бы подключиться с помощью HTTPS:// вместо HTTP://
После сохранения изменений запускаем программу снова:

syncthing

Теперь вы можете получить доступ через веб-браузер на веб-интерфейс с другого компьютера зная IP адрес.

Syncthing web-интерфейс



















Нужно через web-интерфейс добавить пользователя и назначить ему пароль для ограничения не санкционированного доступа. Нажмите на кнопку Действия -> Настройки где можно комфортно указать имя пользователя и пароль для него.

Запускаем Syncthing как службу[править]

Создадим init-Skript для запуска Syncthing как службы:

mcedit /etc/init.d/syncthing

со следующим содержанием:

#!/bin/sh
### BEGIN INIT INFO
# Provides: syncthing
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Single-user daemonized version of syncthing.
# Description: Starts the syncthing daemon
### END INIT INFO
 
DAEMON=/usr/bin/syncthing
PID=/tmp/syncthing.pid
 
case "$1" in
  start)
        echo "Starting syncthing ..."
        ## start-stop-daemon --start --oknodo --pidfile $PID --exec $DAEMON
        start-stop-daemon --start --background --oknodo --pidfile $PID --make-pidfile --chuid root --user root --exec $DAEMON
        sleep 6
        ;;
  stop)
        echo "Stopping syncthing ..."
        start-stop-daemon --stop --pidfile $PID --chuid root --user root --retry=TERM/10/KILL/5 && exit 0
        start-stop-daemon --stop --oknodo --exec $DAEMON --name syncthing --retry=TERM/10/KILL/5
        ;;
  restart|force-reload)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: syncthing {start|stop|restart|force-reload}" >&2
        exit 1
         ;;
 
esac
 
exit 0

созданный файл нужно сделать исполняемым и добавьте в автозагрузку:

chmod +x /etc/init.d/syncthing
update-rc.d syncthing defaults

Теперь вы можете пользоваться командами:

service syncthing start - запустить службу
service syncthing stop - остановить службу
service syncthing restart - перезапустить службу
service syncthing force-reload

Ссылки:[править]

  1. Официальная страничка Syncthing в интернете.
  2. Интсрукция по установке
  3. Интсрукция по установке
  4. Ещё одна инструкция по установке