Syncthing 系列目錄
- Syncthing 怎麼用?從裝置配對到檔案同步的實用筆記
- 用 Docker 部署 Syncthing:Compose、連接埠和目錄映射避坑
- Syncthing 多裝置怎麼配?對等網路、星型拓撲和引入者
- Android 上怎麼用 Syncthing?Syncthing-Fork 設定與照片備份
- Syncthing 多裝置多資料夾怎麼管理?拓撲、命名和版本控制
- Syncthing 如何同步 iPhone 照片到電腦或 NAS
Syncthing 適合用來做多裝置之間的點對點檔案同步。它不是傳統網路硬碟,也不是把所有資料先上傳到某個中心伺服器再下載回來,而是讓已授權的裝置直接交換檔案。
如果你正在考慮用它同步 Markdown 筆記、照片備份、設定檔或家庭 NAS 目錄,重點不只是「能不能同步」,而是先理解幾個基本概念:裝置、資料夾、裝置 ID、同步方向、發現方式和衝突處理。
Syncthing 解決什麼問題
Syncthing 的核心場景是:你有兩台或多台裝置,希望它們之間保持某個目錄一致。
典型例子:
- Windows 桌機和筆電之間同步工作資料。
- 手機和 NAS 之間同步照片或文件。
- 多台 Linux 伺服器之間同步設定範例、腳本或小型資料目錄。
- Obsidian、Joplin 外部附件、Markdown 筆記目錄在多裝置間同步。
它更適合「自己控制裝置和資料」的同步場景。如果你需要多人權限管理、線上預覽、分享連結或協作編輯,傳統網路硬碟或文件協作平台會更合適。
第一次啟動後會發生什麼
官方入門文件建議把兩台機器並行設定。Syncthing 裡,一台機器叫一個 device。你正在設定的機器是 local device,另一台要同步的機器是 remote device。
第一次啟動 Syncthing 時,它會產生設定檔、加密金鑰和裝置 ID,並預設在本機開啟 Web GUI:
|
|
這個 Web GUI 是日常設定入口。官方文件也提到,預設可能會建立一個 Default Folder,通常對應使用者目錄下的 Sync 資料夾。你可以先用它測試,也可以後面刪除並新增自己的目錄。
裝置 ID 是配對基礎
Syncthing 的裝置配對靠 device ID。
每台裝置首次啟動時都會產生自己的金鑰,裝置 ID 可以理解為這個裝置憑證的可讀指紋。兩台裝置只有互相加入對方的裝置 ID,才會建立連線並同步。
實際操作順序通常是:
- 在兩台裝置上都啟動 Syncthing。
- 分別開啟 Web GUI。
- 在 A 上加入 B 的 device ID。
- 在 B 上加入 A 的 device ID。
- 選擇要共享的資料夾。
- 儲存後等待兩邊連線。
裝置 ID 不需要像密碼一樣保密,但也不要隨便把自己的同步拓撲公開到不必要的地方。真正需要保護的是裝置私鑰、Web GUI 管理權限和同步目錄本身。
資料夾不是自動全機同步
Syncthing 同步的是你明確新增的 folder,不會預設同步整台機器。
每個資料夾都有自己的路徑、ID、共享裝置和同步類型。常見做法是按用途拆分:
notes/:Markdown 筆記。photos-inbox/:手機照片中轉。docs/:多裝置文件目錄。scripts/:小腳本和設定範例。
不要一開始就同步過大的系統目錄、下載目錄或混雜目錄。目錄越複雜,衝突、忽略規則、權限差異和掃描成本越容易變成長期維護問題。
三種常見資料夾類型
官方文件裡把資料夾類型分得很清楚。實際使用時,先理解這三種就夠了。
Send & Receive
這是預設模式。這個資料夾既傳送本機變更,也接收其他裝置變更。
適合:
- 多台電腦共同編輯筆記。
- 多裝置共同維護文件。
- 普通雙向同步目錄。
如果兩台裝置同時改了同一個檔案,Syncthing 會產生衝突檔案,而不是直接靜默覆蓋。
Send Only
這個模式下,本機像「參考副本」。它會向其他裝置傳送變化,但不會套用其他裝置傳來的變化。
適合:
- 主裝置向備份裝置分發檔案。
- 希望某台機器上的目錄狀態作為基準。
- 不希望遠端修改反向影響本機。
如果遠端發生變化,本機可能顯示 out of sync。此時 Web GUI 會提供 Override Changes,用本機狀態覆蓋叢集裡的其他狀態。這個按鈕要謹慎使用。
Receive Only
這個模式和 Send Only 相反。它接收叢集裡的變更,但本地改動不會再傳給其他裝置。
適合:
- 備份目標。
- 唯讀鏡像。
- 不希望本地誤操作污染主同步目錄的裝置。
如果本地出現修改,Web GUI 會提示 Revert Local Changes,可以把本地變更撤回到叢集版本。
防火牆和連接埠要先看
Syncthing 能透過發現服務、NAT、relay 等機制讓裝置互相找到,但網路越清楚,連線越穩定。
官方防火牆文件列出的關鍵連接埠是:
|
|
其中:
22000/TCP用於 TCP 同步流量。22000/UDP用於 QUIC 同步流量。21027/UDP用於本地發現廣播或多播。
如果裝置在同一個區域網路內,但一直發現不了,優先檢查本機防火牆、路由器隔離、Wi-Fi 和 LAN 是否被分到不同網段。
如果裝置跨公網或跨 NAT,能做連接埠轉發時,直接連線通常比 relay 更好。沒有連接埠轉發時,relay 也可能讓裝置連上,但效能會比直連差。
Linux 上如果使用 ufw 並安裝了對應套件,可以用:
|
|
Web GUI 預設只監聽本機的 127.0.0.1:8384。如果要遠端存取 GUI,可以改成 0.0.0.0:8384,但這代表管理介面對外暴露,必須同時考慮密碼、HTTPS、反向代理或 SSH 隧道。普通家庭場景下,更推薦用 SSH 隧道存取遠端 GUI。
.stignore 要放在同步根目錄
如果有些檔案不想同步,可以在同步資料夾根目錄建立 .stignore。
注意幾個細節:
.stignore必須放在同步資料夾的根目錄。- 規則相對於同步根目錄生效。
.stignore本身不會同步到其他裝置。- 檔案內容應使用 UTF-8 編碼。
一個簡單例子:
|
|
(?d) 的作用是:當這些被忽略檔案阻止目錄刪除時,允許 Syncthing 刪除它們。適合 .DS_Store 這類系統自動產生檔案。
驚嘆號 ! 是反向規則,用來把某些檔案重新納入同步。但反向規則可能導致 Syncthing 遍歷本來會忽略的目錄。規則很多時,最好先從簡單規則開始。
檔案版本不是本地復原
Syncthing 支援檔案版本保留,但它的語義容易誤解。
官方文件強調,版本保留是「接收遠端變更時,把舊版本歸檔」。也就是說,如果 A 開啟了版本保留,B 修改了檔案並同步到 A,A 會把被替換的舊檔案保存起來。但如果 A 自己本地修改了檔案,Syncthing 不能替 A 保存修改前的版本。
常見版本策略包括:
- Trash Can File Versioning:類似回收桶,被遠端刪除或替換的檔案移到
.stversions。 - Simple File Versioning:保留固定數量的歷史版本。
- Staggered File Versioning:按時間間隔保留版本,越舊越稀疏。
- External File Versioning:交給外部腳本處理。
如果你用 Syncthing 同步重要文件,建議至少在備份目標裝置上開啟簡單版本或回收桶版本。它不能代替完整備份,但能減少誤刪和誤覆蓋的損失。
同步衝突如何產生
Syncthing 會識別衝突。兩台裝置同時修改同一個檔案,而且內容不同,就可能產生類似這樣的衝突檔案:
|
|
這比靜默覆蓋安全,但也代表你要定期清理衝突檔案。
容易產生衝突的場景:
- 多裝置同時開啟同一份 Markdown 筆記。
- 應用程式自動寫入同一個狀態檔。
- 同步
.obsidian/workspace.json這類裝置狀態檔。 - Windows、macOS、Android 之間出現大小寫檔名差異。
如果同步筆記,建議把正文、附件和模板同步;工作區狀態、快取、外掛臨時檔要謹慎處理,必要時放進 .stignore。
安全邊界
Syncthing 的安全目標之一是:未授權裝置不能加入同步叢集,傳輸中的檔案內容不能被旁路監聽者讀取。
官方安全文件說明,裝置間流量由 TLS 保護,連線建立時會檢查裝置憑證指紋是否在允許清單中。換句話說,只有雙方配置了彼此的裝置 ID,才會真正建立同步關係。
但這不等於「使用 Syncthing 這件事不可見」。例如:
- 開啟全域發現時,裝置會向發現伺服器公告裝置 ID 和監聽位址。
- 本地發現會在區域網路內發送廣播或多播。
- relay 伺服器會知道連線裝置的 device ID,但不能解密同步內容。
- Web GUI 如果對外開放,會暴露這台機器執行了 Syncthing。
所以安全建議很直接:
- 不要把 Web GUI 暴露到公網,除非你明確做好認證和加密。
- 只加入你信任的裝置。
- 重要目錄配合系統磁碟加密或單獨備份。
- 不需要全域發現、relay 或自動升級時,可以按場景關閉,但要接受連線便利性下降。
不受信任裝置加密
Syncthing 還支援 Untrusted / Encrypted Devices。這個功能可以讓某個不受信任裝置只保存加密後的資料。
一個典型場景是:你有一台雲端伺服器或外部機器,希望它參與同步、承擔中轉或備份角色,但不希望它看到明文檔案。可信裝置向它傳送資料時,會使用資料夾密碼加密;其他可信裝置拿到同樣密碼後,可以從這個不受信任裝置同步並解密。
但官方文件也提醒,這個功能仍應視為 beta / testing。它適合有明確需求的人謹慎使用,不建議一開始就作為主同步方案。
需要特別記住:
- 檔案資料、檔名、時間、雜湊和目錄結構會被保護。
- 資料夾 ID、標籤和大致檔案大小不屬於完整保護範圍。
- 密碼和 folder ID 要可靠保存。
- 不受信任裝置上的資料夾類型要設為
Receive Encrypted。
如果只是家庭 NAS、自己的電腦和手機之間同步,通常先用普通可信裝置模式,把系統登入、磁碟加密和備份做好,會更容易維護。
實用設定建議
如果你準備用 Syncthing 長期同步筆記或文件,可以按這個思路設定:
- 每類資料單獨建資料夾,不要混在一個超大目錄裡。
- 主力電腦使用
Send & Receive。 - NAS 或備份機可以考慮
Receive Only,並開啟檔案版本。 - 手機端只同步必要目錄,不要同步應用快取目錄。
- 用
.stignore排除快取、臨時檔、工作區狀態檔。 - 區域網路內優先保證
22000/TCP、22000/UDP、21027/UDP可用。 - Web GUI 盡量保持本機監聽,需要遠端管理時優先用 SSH 隧道。
- 重要資料不要只依賴同步,仍然需要獨立備份。
適合和不適合
Syncthing 適合:
- 你希望資料主要留在自己的裝置上。
- 你願意理解裝置配對、同步目錄和衝突處理。
- 你有 NAS、家用伺服器或多台個人裝置。
- 你想同步 Markdown、照片中轉、腳本、輕量文件。
Syncthing 不太適合:
- 需要多人線上協作編輯。
- 需要網頁端檔案預覽和分享連結。
- 需要細粒度團隊權限。
- 不想處理任何網路、防火牆和衝突問題。
它更像一個可靠的「裝置間同步層」,而不是完整的雲端硬碟產品。用得好,Syncthing 可以把 NAS、電腦、手機連成一個可控的資料網路;用得太隨意,也可能因為衝突、誤刪、忽略規則和網路設定變成維護負擔。