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](https://syncthing.net/)
- [Документация Syncthing](https://docs.syncthing.net/)
Установка 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 адрес.
Нужно через 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