Syncthing: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Tosha (обсуждение | вклад) Нет описания правки |
Обновлена информация о GUI-оболочках для приложения. |
||
(не показано 35 промежуточных версий 19 участников) | |||
Строка 1: | Строка 1: | ||
{{Карточка программы |
{{Карточка программы |
||
| снимок экрана = Syncthing-ru.png |
|||
| сайт = https://syncthing.net/ |
|||
|логотип = SyncthingLogoHorizontal.svg |
|||
|снимок экрана = Syncthing-ru.png |
|||
|подпись = Веб-интерфейс приложения |
|||
|тип = Синхронизация файлов |
|||
|автор = [https://github.com/calmh Джейкоб Борг (Jakob Borg)] |
|||
|разработчик = Джейкоб Борг и сообщество разработчиков открытого проекта |
|||
|языки интерфейса = Английский, Русский, ... (всего 34 языка/диалекта) |
|||
|операционные системы = [[Linux]], [[OS X]], [[Microsoft Windows]], [[Android]], [[BSD]], [[Solaris]] |
|||
|написана на = [[Go]] |
|||
|интерфейс = [[Графический интерфейс]],<br/>[[Веб-приложение|Web-интерфейс]] (локальный),<br/>[[Интерфейс командной строки|Командная строка]],<br/>[[Конфигурационный файл]] |
|||
|первый выпуск = [[15 декабря]] [[2013]] |
|||
|аппаратная платформа = [[i386]], [[x64]], [[ARM (архитектура)|ARM]] |
|||
|состояние = Активен |
|||
|сайт = {{URL|http://syncthing.net/}}<br/>{{URL|https://github.com/syncthing/}} |
|||
}} |
}} |
||
'''Syncthing''' |
'''Syncthing''' — приложение, позволяющее [[Синхронизация данных|синхронизировать]] файлы между несколькими устройствами. Присутствует поддержка сохранения последовательных версий файла по нескольким алгоритмам, включая пользовательский<ref>{{cite web |url=http://docs.syncthing.net/users/versioning.html |title=File Versioning |work=Syncthing Docs |accessdate=2015-07-01 |lang=en |archive-date=2015-07-01 |archive-url=https://web.archive.org/web/20150701173717/http://docs.syncthing.net/users/versioning.html |deadlink=no }}</ref>, что позволяет использовать Syncthing также для целей резервного копирования, хотя это и не рекомендуется<ref>{{cite web |url=http://docs.syncthing.net/users/faq.html#is-syncthing-my-ideal-backup-application |title=Is Syncthing my ideal backup application? |work=Syncthing Docs |accessdate=2015-07-01 |lang=en |archive-date=2015-07-01 |archive-url=https://web.archive.org/web/20150701170728/http://docs.syncthing.net/users/faq.html#is-syncthing-my-ideal-backup-application |deadlink=no }}</ref>. Приложение и протокол публикуются под [[Открытое программное обеспечение|открытой лицензией]]. |
||
Syncthing может работать в локальной сети и сети интернет, передача всех данных происходит по защищенным каналам [[TLS]] с использованием протокола обмена ключами с [[Perfect forward secrecy|совершенной прямой секретностью]], чтобы исключить возможность прослушивания.<ref>{{cite web |url=https://github.com/syncthing/specs/blob/master/BEPv1.md#transport-and-authentication |title=Transport and Authentication |work=Block Exchange Protocol v1 |publisher=GitHub |accessdate=2015-07-01 |lang=en |deadlink=yes |archiveurl=https://web.archive.org/web/20160911164713/https://github.com/syncthing/specs/blob/master/BEPv1.md#transport-and-authentication |archivedate=2016-09-11 }}</ref> Синхронизация происходит по дате изменения файла, есть поддержка синхронизации на уровне блоков, то есть при небольших изменениях в файле будут синхронизированы только изменившиеся блоки, а не весь файл.<ref name="protocol-intro">{{cite web |url=https://github.com/syncthing/specs/blob/master/BEPv1.md#introduction-and-definitions |title=Introduction and Definitions |work=Block Exchange Protocol v1 |publisher=GitHub |accessdate=2015-07-01 |lang=en |deadlink=yes |archiveurl=https://web.archive.org/web/20160911164713/https://github.com/syncthing/specs/blob/master/BEPv1.md#introduction-and-definitions |archivedate=2016-09-11 }}</ref> |
Syncthing может работать в локальной сети и сети интернет, передача всех данных происходит по защищенным каналам [[TLS]] с использованием протокола обмена ключами с [[Perfect forward secrecy|совершенной прямой секретностью]], чтобы исключить возможность прослушивания.<ref>{{cite web |url=https://github.com/syncthing/specs/blob/master/BEPv1.md#transport-and-authentication |title=Transport and Authentication |work=Block Exchange Protocol v1 |publisher=GitHub |accessdate=2015-07-01 |lang=en |deadlink=yes |archiveurl=https://web.archive.org/web/20160911164713/https://github.com/syncthing/specs/blob/master/BEPv1.md#transport-and-authentication |archivedate=2016-09-11 }}</ref> Синхронизация происходит по дате изменения файла, есть поддержка синхронизации на уровне блоков, то есть при небольших изменениях в файле будут синхронизированы только изменившиеся блоки, а не весь файл.<ref name="protocol-intro">{{cite web |url=https://github.com/syncthing/specs/blob/master/BEPv1.md#introduction-and-definitions |title=Introduction and Definitions |work=Block Exchange Protocol v1 |publisher=GitHub |accessdate=2015-07-01 |lang=en |deadlink=yes |archiveurl=https://web.archive.org/web/20160911164713/https://github.com/syncthing/specs/blob/master/BEPv1.md#introduction-and-definitions |archivedate=2016-09-11 }}</ref> |
||
Строка 29: | Строка 16: | ||
* '''Надёжно, безопасно и конфиденциально''' |
* '''Надёжно, безопасно и конфиденциально''' |
||
** '''Конфиденциальность.''' Никакая часть ваших данных никогда не хранится нигде, кроме ваших компьютеров. Не существует центрального сервера, доступ к которому может быть получен (легально или нелегально). |
** '''Конфиденциальность.''' Никакая часть ваших данных никогда не хранится нигде, кроме ваших компьютеров. Не существует центрального сервера, доступ к которому может быть получен (легально или нелегально). |
||
** '''Шифрование.''' |
** '''Шифрование.''' Все коммуникации защищены протоколом [[TLS]]. Использованный механизм шифрования включает [[Perfect forward secrecy|совершенную прямую секретность]], исключающую возможность доступа к вашим данным даже при получении доступа к ключу шифрования сеанса. |
||
** '''Аутентификация.''' Каждое устройство идентифицируется по стойкому криптографическому сертификату. Только устройства, допущенные явным образом, могут подключиться к вашему кластеру. |
** '''Аутентификация.''' Каждое устройство идентифицируется по стойкому криптографическому сертификату. Только устройства, допущенные явным образом, могут подключиться к вашему кластеру. |
||
* '''Открытая разработка''' |
* '''Открытая разработка''' |
||
** '''Открытое обсуждение.''' Разработка и использование всегда открыты для предложений. |
** '''Открытое обсуждение.''' Разработка и использование всегда открыты для предложений. |
||
** '''Открытый программный код.''' Весь программный код доступен на GitHub |
** '''Открытый программный код.''' Весь программный код доступен на GitHub. |
||
** '''Открытый протокол.''' Протокол является документированным стандартом — никакой скрытой магии. |
** '''Открытый протокол.''' Протокол является документированным стандартом — никакой скрытой магии. |
||
** '''Открытая разработка.''' Все программные ошибки немедленно видны всем желающим — никаких скрытых уязвимостей. |
** '''Открытая разработка.''' Все программные ошибки немедленно видны всем желающим — никаких скрытых уязвимостей. |
||
* '''Простота использования.''' |
* '''Простота использования.''' |
||
Syncthing всё ещё в разработке, тем не менее, большой объём функций уже реализован: |
Syncthing всё ещё в разработке, тем не менее, большой объём функций уже реализован: |
||
* '''Веб-интерфейс.''' Настройка и мониторинг Syncthing возможны через динамичный и мощный интерфейс, доступный через веб-браузер. |
|||
* '''Портируемый код.''' Приложение работает на Mac OS X, Windows, Linux, FreeBSD и Solaris. Его можно запустить на рабочих компьютерах и использовать для синхронизации с сервером для резервного копирования. |
|||
* '''Простота.''' Syncthing не требует IP-адресов или продвинутого конфигурирования: он просто работает, через локальную сеть или Интернет. Каждое устройство идентифицируется по ID. Просто дайте ID вашим друзьям, предоставьте доступ к папке и наблюдайте: UPnP сделает всё необходимое, если вы не хотите настраивать перенаправление портов или не знаете, как. |
|||
* '''Мощный.''' Синхронизируйте столько папок, сколько вам нужно с различными людьми. |
|||
{{конец цитаты|источник=https://syncthing.net}} |
{{конец цитаты|источник=https://syncthing.net}} |
||
== Запланированная функциональность == |
== Запланированная функциональность == |
||
* Использование протокола [[Протокол передачи данных на основе UDP| |
* Использование протокола [[Протокол передачи данных на основе UDP|UDP]] для оптимизации передачи данных и решения проблемы NAT.<ref>{{cite web |url=https://github.com/syncthing/syncthing/issues/804 |title=Consider using reliable UDP for block transfers · Issue #804 · syncthing/syncthing |work=Syncthing |publisher=GitHub |accessdate=2015-07-24 |lang=en |archive-date=2022-03-09 |archive-url=https://web.archive.org/web/20220309050800/https://github.com/syncthing/syncthing/issues/804 |deadlink=no }}</ref> |
||
* Поддержка протоколов {{не переведено| |
* Поддержка протоколов {{не переведено|NAT Port Mapping Protocol|NATPMP|en|NAT Port Mapping Protocol}} и {{не переведено|Port Control Protocol|PCP|en|Port Control Protocol}}.<ref>{{cite web |url=https://github.com/syncthing/syncthing/issues/698 |title=Add NATPMP & PCP support · Issue #698 · syncthing/syncthing |work=Syncthing |publisher=GitHub |accessdate=2015-07-24 |lang=en}}</ref> |
||
* Поддержка недоверяемых устройств с шифрованием (устройство не имеет доступа к содержимому файлов).<ref>{{cite web |url=https://github.com/syncthing/syncthing/issues/109 |title=Support for file encryption (e.g. non-trusted servers) · Issue #109 · syncthing/syncthing |work=Syncthing |publisher=GitHub |accessdate=2015-07-24 |lang=en}}</ref> |
* Поддержка недоверяемых устройств с шифрованием (устройство не имеет доступа к содержимому файлов).<ref>{{cite web |url=https://github.com/syncthing/syncthing/issues/109 |title=Support for file encryption (e.g. non-trusted servers) · Issue #109 · syncthing/syncthing |work=Syncthing |publisher=GitHub |accessdate=2015-07-24 |lang=en |archive-date=2015-02-20 |archive-url=https://web.archive.org/web/20150220052705/https://github.com/syncthing/syncthing/issues/109 |deadlink=no }}</ref> |
||
== Технология == |
== Технология == |
||
Строка 56: | Строка 44: | ||
Каждый узел стремится синхронизировать локальное хранилище с глобальной моделью, запрашивая у других узлов в кластере отсутствующие или обновившиеся блоки.<ref name="protocol-intro" /> |
Каждый узел стремится синхронизировать локальное хранилище с глобальной моделью, запрашивая у других узлов в кластере отсутствующие или обновившиеся блоки.<ref name="protocol-intro" /> |
||
Для обнаружения |
Для обнаружения устройствами друг друга используется также собственный Device Discovery Protocol v2<ref>{{cite web |url=https://github.com/syncthing/specs/blob/master/DISCOVERYv2.md |title=Device Discovery Protocol v2 |work=Syncthing Specs |publisher=GitHub |accessdate=2015-07-01 |lang=en }}{{Недоступная ссылка|date=2018-05|bot=InternetArchiveBot }}</ref>. |
||
Syncthing не использует [[Одноранговая сеть|P2P]]-сеть для обнаружения устройств или для [[NAT#NAT Traversal|решения проблемы NAT-роутеров]], но все соединения между устройствами происходят непосредственно по принципу точка-точка. Для глобального обнаружения используется один или несколько специализированных discovery-серверов, для локального — [[широковещательный домен]]. |
Syncthing не использует [[Одноранговая сеть|P2P]]-сеть для обнаружения устройств или для [[NAT#NAT Traversal|решения проблемы NAT-роутеров]], но все соединения между устройствами происходят непосредственно по принципу точка-точка. Для глобального обнаружения используется один или несколько специализированных discovery-серверов, для локального — [[широковещательный домен]]. |
||
Возможно соединение непосредственно по IP-адресу или DNS-имени без использования обнаружения вообще, это вариант также является более безопасным (открытый ключ в паре с адресом не попадают в общий, в той или иной степени, доступ). |
|||
Также возможно использование собственного discovery-сервера<ref>{{cite web |url=https://github.com/syncthing/discosrv |title=The Syncthing global discovery server |work=Syncthing |publisher=GitHub |accessdate=2015-07-03 |lang=en}}</ref><ref>{{cite web |url=https://forum.syncthing.net/t/own-global-announce-server/133/7 |title=Own Global Announce Server? |work=Syncthing discussion forum |publisher=Syncthing |accessdate=2015-07-03 |lang=en}}</ref> |
Также возможно использование собственного discovery-сервера.<ref>{{cite web |url=https://github.com/syncthing/discosrv |title=The Syncthing global discovery server |work=Syncthing |publisher=GitHub |accessdate=2015-07-03 |lang=en |archive-date=2018-06-11 |archive-url=https://web.archive.org/web/20180611033725/https://github.com/syncthing/discosrv |deadlink=no }}</ref><ref>{{cite web |url=https://forum.syncthing.net/t/own-global-announce-server/133/7 |title=Own Global Announce Server? |work=Syncthing discussion forum |publisher=Syncthing |accessdate=2015-07-03 |lang=en |archive-date=2015-07-04 |archive-url=https://web.archive.org/web/20150704133942/https://forum.syncthing.net/t/own-global-announce-server/133/7 |deadlink=no }}</ref> |
||
== История == |
== История == |
||
Syncthing был разработан в качестве альтернативы приложениям для как централизованной (например, [[Dropbox]]), так и распределённой синхронизации файлов, таким как [[BitTorrent Sync]]<ref>{{cite web |url=http://docs.syncthing.net/users/faq.html#how-does-syncthing-differ-from-bittorrent-sync |title=How does Syncthing differ from BitTorrent Sync? |work=Syncthing Docs |accessdate=2015-07-01 |lang=en}}</ref>. |
Syncthing был разработан в качестве альтернативы приложениям для как централизованной (например, [[Dropbox]]), так и распределённой синхронизации файлов, таким, как [[BitTorrent Sync]]<ref>{{cite web |url=http://docs.syncthing.net/users/faq.html#how-does-syncthing-differ-from-bittorrent-sync |title=How does Syncthing differ from BitTorrent Sync? |work=Syncthing Docs |accessdate=2015-07-01 |lang=en |archive-date=2015-07-01 |archive-url=https://web.archive.org/web/20150701170728/http://docs.syncthing.net/users/faq.html#how-does-syncthing-differ-from-bittorrent-sync |deadlink=no }}</ref>. |
||
Целью проекта было устранение основных недостатков имеющихся решений (проблемы безопасности<ref>{{cite web |url=http://docs.syncthing.net/users/faq.html#why-is-the-setup-more-complicated-than-btsync |title=Why is the setup more complicated than BTSync? |work=Syncthing Docs |accessdate=2015-07-01 |lang=en}}</ref>, отсутствие открытой лицензии на протокол и ПО, и пр.). И, хотя самим автором проект никогда не позиционировался как открытая замена BitTorrent Sync, многие восприняли его именно в этом качестве.<ref>{{cite web |url=https://www.grc.com/sn/sn-456.txt |title=Security Now! |publisher=Grc.com |accessdate=2015-07-01 |lang=en}}</ref> |
Целью проекта было устранение основных недостатков имеющихся решений (проблемы безопасности<ref>{{cite web |url=http://docs.syncthing.net/users/faq.html#why-is-the-setup-more-complicated-than-btsync |title=Why is the setup more complicated than BTSync? |work=Syncthing Docs |accessdate=2015-07-01 |lang=en |archive-date=2015-07-01 |archive-url=https://web.archive.org/web/20150701170728/http://docs.syncthing.net/users/faq.html#why-is-the-setup-more-complicated-than-btsync |deadlink=no }}</ref>, отсутствие открытой лицензии на протокол и ПО, и пр.). И, хотя самим автором проект никогда не позиционировался как открытая замена BitTorrent Sync, многие восприняли его именно в этом качестве.<ref>{{cite web |url=https://www.grc.com/sn/sn-456.txt |title=Security Now! |publisher=Grc.com |accessdate=2015-07-01 |lang=en |archive-date=2019-01-17 |archive-url=https://web.archive.org/web/20190117214850/https://www.grc.com/sn/sn-456.txt |deadlink=no }}</ref> |
||
=== Хронология основных событий проекта === |
=== Хронология основных событий проекта === |
||
* '''2013-12-15''' |
* '''2013-12-15''' — перемещение проекта на [[GitHub]] |
||
* '''2013-12-22''' |
* '''2013-12-22''' — выход первой версии (v0.1) |
||
* '''2013-03-24''' |
* '''2013-03-24''' — выбор в качестве лицензии [[Лицензия MIT|MIT]] |
||
* '''2014-09-29''' |
* '''2014-09-29''' — смена лицензии на [[GNU General Public License|GPL]] 3.0<ref>{{cite web |url=https://github.com/syncthing/syncthing |title=Syncthing |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en |archive-date=2015-10-29 |archive-url=https://web.archive.org/web/20151029134224/https://github.com/syncthing/syncthing |deadlink=no }}</ref> |
||
* '''2014-10-02''' |
* '''2014-10-02''' — проект переименован в Pulse.<ref>{{cite web |url=https://forum.syncthing.net/t/archived-introducing-pulse-and-ind-ie/1074 |title=Introducing Pulse, and ind.ie |work=Syncthing Forum |accessdate=2015-07-01 |lang=en |archive-date=2019-10-09 |archive-url=https://web.archive.org/web/20191009130805/https://forum.syncthing.net/t/archived-introducing-pulse-and-ind-ie/1074 |deadlink=no }}</ref> |
||
* '''2014-11-17''' |
* '''2014-11-17''' — создатель и ведущий разработчик проекта Джейкоб Борг отменил решение о переименовании проекта Syncthing в Pulse и прекратил сотрудничество ind.ie по причине категорического несогласия с некоторыми радикальными требованиями нового партнёра касательно приватности в проекте в частности и управления проектом в целом.<ref>{{cite web|title=Syncthing is still Syncthing|url=https://discourse.syncthing.net/t/syncthing-is-still-syncthing/1372|accessdate=2014-11-26|archiveurl=https://web.archive.org/web/20141129075134/https://discourse.syncthing.net/t/syncthing-is-still-syncthing/1372|archivedate=2014-11-29|deadlink=yes}}</ref> |
||
* '''2015-03-07''' |
* '''2015-03-07''' — смена лицензии на [[Mozilla Public License|MPL]] 2.0 |
||
== Дочерние проекты == |
== Дочерние проекты == |
||
* '''Syncthing Core'''<ref>{{cite web |url=https://github.com/syncthing/syncthing |title=syncthing |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en}}</ref> — официальный пакет от Syncthing, работающий через CLI и Web UI. |
* '''Syncthing Core'''<ref>{{cite web |url=https://github.com/syncthing/syncthing |title=syncthing |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en |archive-date=2015-10-29 |archive-url=https://web.archive.org/web/20151029134224/https://github.com/syncthing/syncthing |deadlink=no }}</ref> — официальный пакет от Syncthing, работающий через CLI и Web UI. |
||
* '''SyncTrayzor'''<ref>{{cite web |url=https://github.com/canton7/SyncTrayzor |title=SyncTrayzor |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en}}</ref> — GUI-приложение работает только на Windows. |
* '''SyncTrayzor'''<ref>{{cite web |url=https://github.com/canton7/SyncTrayzor |title=SyncTrayzor |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en |archive-date=2016-07-12 |archive-url=https://web.archive.org/web/20160712185926/https://github.com/canton7/SyncTrayzor |deadlink=no }}</ref> — GUI-приложение, работает только на Windows (на данный момент не поддерживается). |
||
* '''Syncthing Tray'''<ref>{{Статья|ссылка=https://github.com/Martchus/syncthingtray|автор=Martchus|заглавие=Martchus/syncthingtray|год=2024-09-11}}</ref> — кроссплатформенное GUI-приложение с открытым исходным кодом. |
|||
* '''Syncthing-GTK'''<ref>{{cite web |url=https://github.com/syncthing/syncthing-gtk |title=syncthing-gtk |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en}}</ref> — кроссплатформенное GUI-приложение, поддерживающее также отслеживание события [[ОС]] об изменении файла — непосредственная реакция на изменение файла вместо регулярного (по умолчанию 60 секунд) сканирование файлов на изменения у классической версии Syncthing. |
|||
* ''' |
* '''Syncthing-GTK'''<ref>{{cite web |url=https://github.com/syncthing/syncthing-gtk |title=syncthing-gtk |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en |archive-date=2015-08-04 |archive-url=https://web.archive.org/web/20150804153510/https://github.com/syncthing/syncthing-gtk |deadlink=no }}</ref> — кроссплатформенное GUI-приложение, поддерживающее также отслеживание события [[Операционная система|ОС]] об изменении файла — непосредственная реакция на изменение файла вместо регулярного (по умолчанию 60 секунд) сканирования файлов на изменения у классической версии Syncthing. |
||
* ''' |
* '''syncthing-android'''<ref>{{cite web |url=https://github.com/syncthing/syncthing-android |title=syncthing-android |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en |archive-date=2017-02-27 |archive-url=https://web.archive.org/web/20170227050829/https://github.com/syncthing/syncthing-android |deadlink=no }}</ref> — версия для Android. Возможная установка через [[Google Play]] или [[F-Droid]]. |
||
* ''' |
* '''Syncthing-inotify'''<ref>{{cite web |url=https://github.com/syncthing/syncthing-inotify |title=syncthing-inotify |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en |archive-date=2015-08-02 |archive-url=https://web.archive.org/web/20150802091919/https://github.com/syncthing/syncthing-inotify |deadlink=no }}</ref> — приложение командной строки для реализации поддержки отслеживания события ОС об изменении файла. Поддерживается тот же набор ОС, что и у Syncthing. |
||
* '''QSyncthingTray'''<ref>{{cite web |url=https://github.com/sieren/QSyncthingTray |title=QSyncthingTray |work=Syncthing |publisher=GitHub |accessdate=2015-07-01 |lang=en |archive-date=2018-06-11 |archive-url=https://web.archive.org/web/20180611152256/https://github.com/sieren/QSyncthingTray |deadlink=no }}</ref> — кроссплатформенное стороннее приложение, не содержит пакета Syncthing, это только GUI-оболочка для Syncthing.(потеряло актуальность так как с версии 14.40 эта функциональность добавлена в ядро Syncthing) |
|||
⚫ | |||
⚫ | |||
* [http://www.xakep.ru/post/62487/default.asp Статья на сайте журнала Xakep] |
|||
== См. также == |
== См. также == |
||
Строка 92: | Строка 77: | ||
== Примечания == |
== Примечания == |
||
{{примечания}} |
{{примечания}} |
||
⚫ | |||
⚫ | |||
[[Категория:Синхронизация]] |
[[Категория:Синхронизация]] |
||
[[Категория: |
[[Категория:Кроссплатформенное программное обеспечение]] |
||
[[Категория:Пиринговый файлообмен]] |
[[Категория:Пиринговый файлообмен]] |
Текущая версия от 02:15, 12 сентября 2024
Syncthing | |
---|---|
Тип | программа для синхронизации файлов[вд] |
Написана на | Go[2] |
Операционные системы | GNU/Linux, Android, Windows, macOS, BSD, Solaris, FreeBSD, NetBSD, OpenBSD и DragonFly BSD |
Первый выпуск | 15 декабря 2013 |
Аппаратные платформы | x86, x86-64, ARM и Android |
Последняя версия | |
Репозиторий | github.com/syncthing/syn… |
Лицензия | MPLv2.0[вд][3][4][…] |
Сайт | syncthing.net |
Медиафайлы на Викискладе |
Syncthing — приложение, позволяющее синхронизировать файлы между несколькими устройствами. Присутствует поддержка сохранения последовательных версий файла по нескольким алгоритмам, включая пользовательский[5], что позволяет использовать Syncthing также для целей резервного копирования, хотя это и не рекомендуется[6]. Приложение и протокол публикуются под открытой лицензией.
Syncthing может работать в локальной сети и сети интернет, передача всех данных происходит по защищенным каналам TLS с использованием протокола обмена ключами с совершенной прямой секретностью, чтобы исключить возможность прослушивания.[7] Синхронизация происходит по дате изменения файла, есть поддержка синхронизации на уровне блоков, то есть при небольших изменениях в файле будут синхронизированы только изменившиеся блоки, а не весь файл.[8]
Описание приложения
[править | править код]
Syncthing заменяет распространённые закрытые сервисы облачного хранения и синхронизации файлов чем-то более открытым, заслуживающим доверия и децентрализованным. Ваши данные — только ваши и вы заслуживаете выбирать, где они хранятся, доступны ли они третьей стороне и как именно они пересылаются через Интернет.
Оригинальный текст (англ.)Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.
- Надёжно, безопасно и конфиденциально
- Конфиденциальность. Никакая часть ваших данных никогда не хранится нигде, кроме ваших компьютеров. Не существует центрального сервера, доступ к которому может быть получен (легально или нелегально).
- Шифрование. Все коммуникации защищены протоколом TLS. Использованный механизм шифрования включает совершенную прямую секретность, исключающую возможность доступа к вашим данным даже при получении доступа к ключу шифрования сеанса.
- Аутентификация. Каждое устройство идентифицируется по стойкому криптографическому сертификату. Только устройства, допущенные явным образом, могут подключиться к вашему кластеру.
- Открытая разработка
- Открытое обсуждение. Разработка и использование всегда открыты для предложений.
- Открытый программный код. Весь программный код доступен на GitHub.
- Открытый протокол. Протокол является документированным стандартом — никакой скрытой магии.
- Открытая разработка. Все программные ошибки немедленно видны всем желающим — никаких скрытых уязвимостей.
- Простота использования.
Syncthing всё ещё в разработке, тем не менее, большой объём функций уже реализован:
- Веб-интерфейс. Настройка и мониторинг Syncthing возможны через динамичный и мощный интерфейс, доступный через веб-браузер.
- Портируемый код. Приложение работает на Mac OS X, Windows, Linux, FreeBSD и Solaris. Его можно запустить на рабочих компьютерах и использовать для синхронизации с сервером для резервного копирования.
- Простота. Syncthing не требует IP-адресов или продвинутого конфигурирования: он просто работает, через локальную сеть или Интернет. Каждое устройство идентифицируется по ID. Просто дайте ID вашим друзьям, предоставьте доступ к папке и наблюдайте: UPnP сделает всё необходимое, если вы не хотите настраивать перенаправление портов или не знаете, как.
- Мощный. Синхронизируйте столько папок, сколько вам нужно с различными людьми.
Запланированная функциональность
[править | править код]- Использование протокола UDP для оптимизации передачи данных и решения проблемы NAT.[9]
- Поддержка протоколов NATPMP[англ.] и PCP[англ.].[10]
- Поддержка недоверяемых устройств с шифрованием (устройство не имеет доступа к содержимому файлов).[11]
Технология
[править | править код]Для обмена данными между устройствами Syncthing использует специально разработанный Block Exchange Protocol (протокол обмена блоками). Протокол используется между двумя или более узлами сети, которые образуют кластер. Каждый узел имеет один или несколько репозиториев файлов, описанных локальной моделью, которая содержит метаданные и хэши блоков. Локальная модель распространяется между всеми узлами в кластере. Объединение всех локальных моделей формирует глобальную модель, включающую в себя наиболее изменённые версии файлов. Каждый узел стремится синхронизировать локальное хранилище с глобальной моделью, запрашивая у других узлов в кластере отсутствующие или обновившиеся блоки.[8]
Для обнаружения устройствами друг друга используется также собственный Device Discovery Protocol v2[12]. Syncthing не использует P2P-сеть для обнаружения устройств или для решения проблемы NAT-роутеров, но все соединения между устройствами происходят непосредственно по принципу точка-точка. Для глобального обнаружения используется один или несколько специализированных discovery-серверов, для локального — широковещательный домен. Возможно соединение непосредственно по IP-адресу или DNS-имени без использования обнаружения вообще, это вариант также является более безопасным (открытый ключ в паре с адресом не попадают в общий, в той или иной степени, доступ). Также возможно использование собственного discovery-сервера.[13][14]
История
[править | править код]Syncthing был разработан в качестве альтернативы приложениям для как централизованной (например, Dropbox), так и распределённой синхронизации файлов, таким, как BitTorrent Sync[15].
Целью проекта было устранение основных недостатков имеющихся решений (проблемы безопасности[16], отсутствие открытой лицензии на протокол и ПО, и пр.). И, хотя самим автором проект никогда не позиционировался как открытая замена BitTorrent Sync, многие восприняли его именно в этом качестве.[17]
Хронология основных событий проекта
[править | править код]- 2013-12-15 — перемещение проекта на GitHub
- 2013-12-22 — выход первой версии (v0.1)
- 2013-03-24 — выбор в качестве лицензии MIT
- 2014-09-29 — смена лицензии на GPL 3.0[18]
- 2014-10-02 — проект переименован в Pulse.[19]
- 2014-11-17 — создатель и ведущий разработчик проекта Джейкоб Борг отменил решение о переименовании проекта Syncthing в Pulse и прекратил сотрудничество ind.ie по причине категорического несогласия с некоторыми радикальными требованиями нового партнёра касательно приватности в проекте в частности и управления проектом в целом.[20]
- 2015-03-07 — смена лицензии на MPL 2.0
Дочерние проекты
[править | править код]- Syncthing Core[21] — официальный пакет от Syncthing, работающий через CLI и Web UI.
- SyncTrayzor[22] — GUI-приложение, работает только на Windows (на данный момент не поддерживается).
- Syncthing Tray[23] — кроссплатформенное GUI-приложение с открытым исходным кодом.
- Syncthing-GTK[24] — кроссплатформенное GUI-приложение, поддерживающее также отслеживание события ОС об изменении файла — непосредственная реакция на изменение файла вместо регулярного (по умолчанию 60 секунд) сканирования файлов на изменения у классической версии Syncthing.
- syncthing-android[25] — версия для Android. Возможная установка через Google Play или F-Droid.
- Syncthing-inotify[26] — приложение командной строки для реализации поддержки отслеживания события ОС об изменении файла. Поддерживается тот же набор ОС, что и у Syncthing.
- QSyncthingTray[27] — кроссплатформенное стороннее приложение, не содержит пакета Syncthing, это только GUI-оболочка для Syncthing.(потеряло актуальность так как с версии 14.40 эта функциональность добавлена в ядро Syncthing)
См. также
[править | править код]Примечания
[править | править код]- ↑ Release 1.28.1 — 2024.
- ↑ The syncthing Open Source Project on Open Hub: Languages Page — 2006.
- ↑ https://github.com/syncthing/syncthing/blob/master/LICENSE
- ↑ Free Software Directory
- ↑ File Versioning (англ.). Syncthing Docs. Дата обращения: 1 июля 2015. Архивировано 1 июля 2015 года.
- ↑ Is Syncthing my ideal backup application? (англ.). Syncthing Docs. Дата обращения: 1 июля 2015. Архивировано 1 июля 2015 года.
- ↑ Transport and Authentication (англ.). Block Exchange Protocol v1. GitHub. Дата обращения: 1 июля 2015. Архивировано из оригинала 11 сентября 2016 года.
- ↑ 1 2 Introduction and Definitions (англ.). Block Exchange Protocol v1. GitHub. Дата обращения: 1 июля 2015. Архивировано из оригинала 11 сентября 2016 года.
- ↑ Consider using reliable UDP for block transfers · Issue #804 · syncthing/syncthing (англ.). Syncthing. GitHub. Дата обращения: 24 июля 2015. Архивировано 9 марта 2022 года.
- ↑ Add NATPMP & PCP support · Issue #698 · syncthing/syncthing (англ.). Syncthing. GitHub. Дата обращения: 24 июля 2015.
- ↑ Support for file encryption (e.g. non-trusted servers) · Issue #109 · syncthing/syncthing (англ.). Syncthing. GitHub. Дата обращения: 24 июля 2015. Архивировано 20 февраля 2015 года.
- ↑ Device Discovery Protocol v2 (англ.). Syncthing Specs. GitHub. Дата обращения: 1 июля 2015. (недоступная ссылка)
- ↑ The Syncthing global discovery server (англ.). Syncthing. GitHub. Дата обращения: 3 июля 2015. Архивировано 11 июня 2018 года.
- ↑ Own Global Announce Server? (англ.). Syncthing discussion forum. Syncthing. Дата обращения: 3 июля 2015. Архивировано 4 июля 2015 года.
- ↑ How does Syncthing differ from BitTorrent Sync? (англ.). Syncthing Docs. Дата обращения: 1 июля 2015. Архивировано 1 июля 2015 года.
- ↑ Why is the setup more complicated than BTSync? (англ.). Syncthing Docs. Дата обращения: 1 июля 2015. Архивировано 1 июля 2015 года.
- ↑ Security Now! (англ.). Grc.com. Дата обращения: 1 июля 2015. Архивировано 17 января 2019 года.
- ↑ Syncthing (англ.). Syncthing. GitHub. Дата обращения: 1 июля 2015. Архивировано 29 октября 2015 года.
- ↑ Introducing Pulse, and ind.ie (англ.). Syncthing Forum. Дата обращения: 1 июля 2015. Архивировано 9 октября 2019 года.
- ↑ Syncthing is still Syncthing . Дата обращения: 26 ноября 2014. Архивировано из оригинала 29 ноября 2014 года.
- ↑ syncthing (англ.). Syncthing. GitHub. Дата обращения: 1 июля 2015. Архивировано 29 октября 2015 года.
- ↑ SyncTrayzor (англ.). Syncthing. GitHub. Дата обращения: 1 июля 2015. Архивировано 12 июля 2016 года.
- ↑ Martchus. Martchus/syncthingtray. — 2024-09-11.
- ↑ syncthing-gtk (англ.). Syncthing. GitHub. Дата обращения: 1 июля 2015. Архивировано 4 августа 2015 года.
- ↑ syncthing-android (англ.). Syncthing. GitHub. Дата обращения: 1 июля 2015. Архивировано 27 февраля 2017 года.
- ↑ syncthing-inotify (англ.). Syncthing. GitHub. Дата обращения: 1 июля 2015. Архивировано 2 августа 2015 года.
- ↑ QSyncthingTray (англ.). Syncthing. GitHub. Дата обращения: 1 июля 2015. Архивировано 11 июня 2018 года.