GitHub 項目地址: https://github.com/syncthing/syncthing
官網(wǎng)主頁: https://syncthing.net?
先說什么是 Syncthing
Syncthing 是一個 開源的去中心化文件同步工具,它允許你在多臺設(shè)備之間直接同步文件,無需通過第三方服務(wù)器、無需云存儲服務(wù),如 Dropbox、Google Drive 等。
它的定位是:
“一個取代專有同步和云服務(wù)的免費、開源、可信的替代品?!?/span>
項目亮點
| |
---|
P2P 架構(gòu) | 數(shù)據(jù)直接在設(shè)備間同步,無中心服務(wù)器 |
端對端加密 | TLS + 數(shù)據(jù)塊校驗,安全可信 |
版本管理 | |
輕量級 & 可移植 | |
自動發(fā)現(xiàn)設(shè)備 | 局域網(wǎng)廣播 + 全局發(fā)現(xiàn)服務(wù)器 |
實時同步狀態(tài) | Web UI 顯示每臺設(shè)備、每個文件夾同步進度 |
跨平臺支持 | Windows、Linux、macOS、BSD、Android、Docker、NAS |
架構(gòu)示意圖
┌─────────────┐
│ Device A │
│ (Linux PC) │?────────────┐
└─────────────┘ │
▲ ▼
┌─────────────┐ ┌─────────────┐
│ Device B │────?│ Device C │
│ (MacBook) │ │ (NAS) │
└─────────────┘ └─────────────┘
▲
│ Peer-to-Peer
└──────────────────────────────?
所有設(shè)備都是平等的參與者,數(shù)據(jù)加密、互相驗證,不依賴中心服務(wù)器。
技術(shù)細節(jié)
- 語言實現(xiàn):使用 Go 語言 編寫,極強的并發(fā)性能和跨平臺特性
- 同步機制
- 文件會被切分成多個數(shù)據(jù)塊(chunk)
- 使用 BEP(Block Exchange Protocol) 協(xié)議通信
- 網(wǎng)絡(luò)機制
- 支持 NAT 穿透(UPnP、relay server)
- 支持 TCP / QUIC / WebSocket
- 可配置全局發(fā)現(xiàn)服務(wù)器,也支持離線同步(局域網(wǎng)直連)
核心模塊
| |
---|
cmd/syncthing | |
lib/model | 同步核心邏輯,包括文件夾狀態(tài)維護、數(shù)據(jù)庫等 |
lib/protocol | BEP 協(xié)議實現(xiàn),數(shù)據(jù)通信層 |
lib/config | |
lib/discover | 設(shè)備發(fā)現(xiàn)服務(wù) |
lib/api | |
使用示例
啟動 Syncthing
shell: syncthing
首次啟動后,會生成配置文件并自動打開 Web UI(默認是 http://127.0.0.1:8384)
安裝
| |
---|
| brew install syncthing |
| apt install syncthing |
| |
| F-Droid、Google Play 安裝 Syncthing App |
| docker run syncthing/syncthing |
安全
- 每個節(jié)點有獨立的設(shè)備 ID(基于加密公鑰)
- 不可偽造的身份認證機制(即使公網(wǎng)同步也安全)
可能的使用場景
| |
---|
| 本地同步,無云服務(wù)器介入,自己掌控數(shù)據(jù) |
| NAS + PC + 手機數(shù)據(jù)互傳 |
| 小團隊局域網(wǎng)共享,無需依賴網(wǎng)盤 |
| |
配置文件
配置文件路徑:
macOS / Linux:~/.config/syncthing/config.xml
Windows:C:\Users\用戶名\AppData\Local\Syncthing\config.xml
包含內(nèi)容:
- 設(shè)備信息(Device ID、認證方式)
- 網(wǎng)絡(luò)設(shè)置、連接策略等
閱讀原文:原文鏈接
該文章在 2025/7/15 9:32:59 編輯過