Syncthing
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/05/01 14:15 UTC 版)
![]() |
|
![]()
Syncthingのウェブインタフェース
|
|
作者 | ヤコブ・ボルグ |
---|---|
開発元 | ヤコブ・ボルグ ほか[1] |
初版 | 2013年12月15日 |
リポジトリ | |
プログラミング 言語 |
Go |
対応OS | Linux, macOS, Windows, Android, BSD, Solaris |
対応言語 | 38言語[2] |
種別 | ファイル同期 |
ライセンス | MPL 2.0[3] |
公式サイト | syncthing |
Syncthing は、Windows、macOS、Linux、Android、Solaris、Darwin、BSDで利用可能な、FOSSのP2Pファイル同期アプリケーションである[4]。このアプリケーションはローカルネットワーク内のデバイス間、あるいはインターネット経由で遠隔地のデバイス間のファイルを同期できる。データのセキュリティおよび安全性はその設計に組み込まれている。バージョン1.0は、5年間のベータテストを経て2019年1月にリリースされた[5]。
技術
SyncthingはGoで記述されており、同様に自由ソフトウェアである独自の Block Exchange Protocol を実装している[6]。
このアプリケーションはBYO型のクラウドモデルであり、ユーザー自身が稼働に必要なハードウェアを提供する。IPv6をサポートしており、IPv4ネットワーク環境ではNATパンチングおよびリレーに対応する。相互に接続するデバイスは(Introducer機能を使用しない限り)明示的な承認を必要とし、メッシュのセキュリティを高めている。すべてのデータは、デバイス間で直接転送される場合もリレー経由で転送される場合も、TLSによって暗号化される[7][8]。
競合が発生した場合、古いファイルは「sync-conflict」という接尾辞(および日時)付きでリネームされ、ユーザーが同名の複数ファイルの扱いを判断できるようにする[9]。GUIラッパーはこれらのファイルを利用し、手動操作を介さずにユーザーが競合を解決できる手段を提供できる。
効率的な同期は、メタデータや転送データ全体の圧縮[10]、ブロックの再利用[11]、軽量なスキャン[12]によって実現されており、完全なハッシュが計算・保存された後に適用される。Syncthing は、リモートデバイスからの更新を処理しない送信専用および受信専用のフォルダータイプ[13]、さまざまなファイルバージョン管理方式[14](ごみ箱、シンプル、段階的バージョン管理、外部プログラムやスクリプトによる管理)、およびファイル・パスの無視パターン[15]を提供する。2種類のSHA256ハッシュ実装が現在サポートされており、起動時に短いベンチマークを行ったうえで高速な方が動的に使用される[16]。ファイルやフォルダーの移動・リネームは効率的に処理され、データを最初から再ダウンロードせずに済むようSyncthingが自動的に最適化を行う[17]。
インフラストラクチャ
デバイスの検出は、プロジェクト開発者によってホストされているパブリックにアクセス可能なディスカバリーサーバー[18]、ブロードキャストメッセージによるローカル(LAN)ディスカバリー、デバイス履歴および静的なホスト名/アドレス指定によって実現されている。プロジェクトは、パブリックサーバーの代替または補助として使用できる、自身のディスカバリーサーバーをホストするためのSyncthing Discovery Server[19]プログラムも提供している。
コミュニティによって提供されたリレーサーバーのネットワークにより、異なるIPv4 NATファイアウォールの背後にあるデバイスが、第三者を介して暗号化されたデータを中継することで通信できるようになっている。このリレーはTURNプロトコルに類似しており、トラフィックはデバイス間でエンドツーエンドにTLS暗号化されている(したがって、リレーサーバーであってもデータそのものではなく暗号化されたストリームしか見ることができない)。必要に応じて、パブリックリレーの有無にかかわらずプライベートリレーを設定・構成することも可能である。Syncthingは、直接接続が利用可能であることを検出した場合、自動的にリレーからデバイス間の直接接続に切り替える[20]。
Syncthingは、プロジェクトやコミュニティのサーバーに一切接続せずに使用することも可能である[21]。アップグレード、オプトイン方式の使用状況データ、ディスカバリーおよびリレーはすべて無効化または個別に構成できるため、メッシュネットワークおよびそのインフラストラクチャ全体を、プライバシーや機密性のために閉じたシステム内で運用することが可能である。
設定と管理
Syncthingは、ローカルまたはリモートのいずれでもウェブブラウザを介して設定可能であり(プロキシサーバーを介したアクセスにも対応している)、設定ファイルを直接編集することも可能である。RESTおよびEvents API、あるいはコミュニティによって提供されたラッパープログラムのいずれかを使用することもできる[22]。Dockerイメージへのリンクもコミュニティ貢献ページに掲載されており、Puppet、Ansibleなどの構成管理ソリューションへのリンクも提供されている。
評価
- 『Security Now』第456回において、ホストのスティーブ・ギブソンは、SyncthingをBitTorrent Syncのオープンソース代替候補として称賛した[23]。その後も第603回[24]、第698回[25]、第727回[26]で言及し、第734回および第781回ではさらに詳しく取り上げた[27][28]。
- 『LWN』のレビュワーは次のように記している[29]。「Syncthingは好印象を与える。開発者たちは、有能で信頼性が高く、安全で、かなりの性能を持つシステムを作るための努力をしてきたように見える。しかし彼らは、それを簡単に設定・利用できるようにする努力もしてきた――多くの自由ソフトウェアプロジェクトが失敗しがちな部分である。Syncthingは、自身のデータ同期とレプリケーションのニーズを管理したいすべての人にとって魅力的なツールである」。
歴史
Syncthingのバージョン履歴(抜粋) | ||
---|---|---|
日付 | バージョン | 主な変更点 |
2023-09-25 | 1.25.0[30] | |
2022-05-04 | 1.20.0[30] | |
2021-04-06 | 1.15.0[30] | |
2020-09-15 | 1.10.0[30] | |
2020-04-21 | 1.5.0[30] | |
2019-10-01 | 1.3.0[31] |
|
2019-07-09 | 1.2.0[32] |
|
2019-05-09 | 1.1.3[33] | |
2019-04-02 | 1.1.1[34] |
|
2019-04-22 | 1.1.0[35] |
|
2019-01-01 | 1.0.0[36] |
|
2016-06-19 | 0.14 "Dysprosium Dragonfly"[37] |
|
2016-05-17 | 0.13 "Copper Cockroach"[38] |
|
2015-11-05 | 0.12 "Beryllium Bedbug"[39] |
|
初の公開バイナリリリース(v0.2)は2013年12月30日に行われた。
2014年10月、開発者はSyncthingのブランド名を「Pulse」に変更すると発表した[40]。しかし、同年11月17日、開発者はSyncthingをPulseに改名しないことを決定し、ind.ieとの協力を解消した。ind.ieによるPulseは、現在では公式に認められたSyncthingのフォークとなっている[41]。
2015年4月22日にリリースされたバージョン0.11.0では、コンフリクト処理、UIでの言語選択、CPU使用率や同期速度の改善、Windowsでの長いファイル名のサポート、ドライブがアクセス不能になった場合などの自動再起動、外部バージョン管理システムのサポートが導入された[42]。バージョン0.11は、旧バージョンとの後方互換性がない[42]。REST APIの変更により、0.10.x系のSyncthingクライアントは自動更新されず、当時の多くのサードパーティ統合との互換性がなかった[42]。
0.13.0は、それ以前のバージョン(0.12.x以下)との互換性がなく、フォルダIDとラベルを分離するなどの変更が加えられた。また、ダウンロード中のファイルの一部を他のクライアントに配信できる機能が追加された[43]。
1.0.0(コードネーム:Erbium Earthworm)[44]は、大きな機能追加は行われなかったが、開発者によると、長年の開発と広範な利用を受けての節目であったという[45][46]。メジャーバージョンが変わったものの、開発者のヤーコブ・ボルグによれば内容は0.14.55-rc.2と同一である[44]。
1.0.0のリリースと同時に、以下のようなsemver風のバージョン管理システムが導入された[47]。
- プロトコル非互換の変更を含む新バージョンはメジャーバージョンとする。
- REST API、データベース、設定ファイルなどの非互換な変更を含む新バージョンはマイナーバージョンとする。
- それ以外の変更はパッチバージョンとする。
バージョン1.1.0では、Go 1.12が採用され、それによりWindows XPおよびWindows Server 2003との互換性が失われた[48]。
1.2.0ではQUICのサポートが導入され、自動クラッシュレポート機能が追加された。また、固定サイズの小さなブロックが非推奨となり、バージョン0.14.45以前のクライアントとの通信サポートが打ち切られた[49]。
1.8.0では、コピーオンライトファイルシステム上でファイルの変更をどのように保存するかを指定できる実験的なフォルダオプションが追加され、TCPホールパンチングのサポートも追加された[50]。
1.9.0では、新たにcaseSensitiveFS
オプションが導入され、ケースインセンシティブなファイルシステムに対する処理を無効化できるようになった[51]。
1.10.0では、LAN IPをグローバルディスカバリネットワークにブロードキャストするかどうかをユーザーが選択できる機能が追加された[52]。
関連項目
- ファイル同期ソフトウェアの比較
- バックアップソフトウェアの一覧
- バックアップソフトウェアの比較
脚注
- ^ “The syncthing translation project on Transifex” (英語). www.transifex.com. 2020年8月24日閲覧。
- ^ “LICENSE”. 2016年4月7日閲覧。
- ^ Wallen, Jack (2016年1月5日). “Let Syncthing turn your desktop into a local cloud for your mobile device”. TechRepublic. CBS Interactive. 2025年5月1日閲覧。
- ^ “Syncthing 1.0.0 released as open-source P2P sync tool, finally leaves beta” (英語). BetaNews (2019年1月3日). 2023年10月18日閲覧。
- ^ “Block Exchange Protocol v1”. 2016年4月7日閲覧。
- ^ “Security Principles — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Relaying — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “FAQ — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “FAQ — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Understanding Synchronization — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Understanding Synchronization — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Folder Types”. 2020年7月9日閲覧。
- ^ “File Versioning — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Ignoring Files — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “cmd/syncthing: Add selectable sha256 package (fixes #3613, fixes #3614)”. Github.com (2016年9月22日). 2017年1月4日閲覧。
- ^ “FAQ — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Understanding Device IDs — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Syncthing Discovery Server — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Relaying — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Security Principles — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Community Contributions — Syncthing v0.14 documentation”. Docs.syncthing.net. 2017年1月4日閲覧。
- ^ “Security Now! Episode 456”. Grc.com. 2014年11月4日閲覧。
- ^ “Security Now! Episode 603”. Grc.com. 2019年2月7日閲覧。
- ^ “Security Now! Episode 698”. Grc.com. 2019年2月7日閲覧。
- ^ “Security Now! Episode 727”. Grc.com. 2019年8月14日閲覧。
- ^ “Security Now! Episode 734 on YouTube”. YouTube.com (2019年10月). 2019年10月3日閲覧。
- ^ “Security Now! Episode 781 on YouTube”. YouTube.com (2020年8月25日). 2020年9月1日閲覧。
- ^ “Syncing all the things”. 2021年9月7日閲覧。
- ^ a b c d e “Versions & Releases — Syncthing documentation”. docs.syncthing.net. 2023年10月18日閲覧。
- ^ v1.3.0, The Syncthing Project, (2019-10-01)
- ^ v1.2.0, The Syncthing Project, (2019-07-09)
- ^ v1.1.3, The Syncthing Project, (2019-05-31)
- ^ v1.1.1, (2019-05-31)
- ^ v1.1.0, (2019-05-31)
- ^ v1.0.0, (2019-05-31)
- ^ “0.14”. Github.com (2016年6月19日). 2025年5月1日閲覧。
- ^ “0.13”. Github.com (2016年5月17日). 2025年5月1日閲覧。
- ^ “0.12” (2016年4月14日). 2025年5月1日閲覧。
- ^ Borg, Jakob (2014年10月9日). “Introducing Pulse, and ind.ie”. 2016年4月7日閲覧。
- ^ Borg, Jakob (2014年11月17日). “Syncthing is still Syncthing”. 2016年4月7日閲覧。
- ^ a b c “Syncthing v0.11.0 Release Notes”. Syncthing Community Forum (2015年4月14日). 2020年10月15日閲覧。
- ^ “Release v0.13.0 · syncthing/syncthing” (英語). GitHub. 2020年10月15日閲覧。
- ^ a b “Syncthing graduation day”. Syncthing Community Forum (2019年1月1日). 2020年10月15日閲覧。
- ^ “Release v1.0.0 · syncthing/syncthing” (英語). GitHub. 2020年10月15日閲覧。
- ^ “Syncthing 1.0.0 released as open-source P2P sync tool, finally leaves beta” (英語). BetaNews (2019年1月3日). 2020年10月15日閲覧。
- ^ “Versions & Releases — Syncthing v1 documentation”. docs.syncthing.net. 2020年10月15日閲覧。
- ^ “Release v1.1.0 · syncthing/syncthing” (英語). GitHub. 2020年10月15日閲覧。
- ^ “Release v1.2.0 · syncthing/syncthing” (英語). GitHub. 2020年10月15日閲覧。
- ^ “Release v1.8.0 · syncthing/syncthing” (英語). GitHub. 2020年10月15日閲覧。
- ^ “Release v1.9.0 · syncthing/syncthing” (英語). GitHub. 2020年10月15日閲覧。
- ^ “Release v1.10.0 · syncthing/syncthing” (英語). GitHub. 2020年10月15日閲覧。
外部リンク
- Syncthingのページへのリンク