Syncthing:一个安全、私密、易用的文件同步工具
-
Syncthing:一个安全、私密、易用的文件同步工具
目录- 一、為什麼你需要 Syncthing
- 二、什麼是 Syncthing
- 🌟 Syncthing 的核心特點
- 三、Syncthing vs 傳統雲存儲:詳細對比
- 四、支持的平台
- 五、如何安裝部署 Syncthing
- 方法一:官方安裝
- 方法二:Homelab 工具安裝(推薦新手)
- 🤖 Android 設備安裝
- 🍎 iOS 設備安裝(特殊情況)
- 六、運行並配置 Syncthing
- 📂 如何具體使用 Syncthing
- 步驟一:添加同步文件夾
- 步驟二:添加同步設備
- 步驟三:選擇同步配對
- 七、常見使用場景
- 八、進階知識與技巧
- 💡 文件夾 ID 的獨特機制
- 🌐 全球發現與中繼服務的真相
- ⚡ 性能優化:.stignore 文件
- 九、重要提醒:Syncthing ≠ 備份
一、為什麼你需要 Syncthing
在信息時代,我們經常需要在不同的設備之間同步文件,比如照片、文檔、音樂等。有時候,我們也需要和其他人共享文件,比如家人、朋友、同事等。
為了實現這些功能,我們通常會使用一些雲存儲服務,比如 Dropbox、Google Drive、OneDrive 等。這些服務雖然方便,但也有一些缺點:
⚠️ 傳統雲存儲的主要問題 💰 成本問題:需要上傳文件到雲端,占用網絡帶寬和存儲空間,可能產生費用 🔐 隱私風險:需要信任第三方服務提供商,可能存在隱私洩露、數據丟失、安全風險等問題 📋 使用限制:需要遵守第三方服務提供商的規則,可能受到限制或封禁 🌐 網絡依賴:需要依賴互聯網連接,可能受到網絡不穩定、速度慢、斷網等影響 值得特別注意的是,近年來主流雲存儲服務的限制正在不斷收緊。例如,Dropbox 已將免費用戶的關聯設備數量限制為僅 3 台,這對於擁有多台設備的用戶來說是一個重大限制。Google Drive 和 OneDrive 等服務也在逐步調整其免費存儲空間額度和使用政策。這些變化促使越來越多用戶開始尋找替代方案。
那麼,有沒有一種方法,可以讓我們直接在自己的設備之間同步文件,而不需要依賴任何第三方服務呢?答案是有的,那就是 Syncthing。
二、什麼是 Syncthing
Syncthing 是一個開源的實時文件同步程序,它可以在兩台或多台計算機之間同步文件,無論它們在哪裡,只要它們能夠互相連接。
根據 Slant 社區的評比,在「最佳個人文件同步解決方案」問題中,Syncthing 排名第 1,而 Dropbox 排名第 13。這充分說明了 Syncthing 在開源社區和注重隱私用戶群體中的受歡迎程度。
🌟 Syncthing 的核心特點
🔒 私密性(Private)
你的數據只存儲在你自己的設備上,不會上傳到任何其他地方。沒有中央服務器,也沒有任何第三方可以窺探或訪問你的數據。
與 Dropbox 等傳統雲存儲不同,Syncthing 採用真正的點對點(P2P)架構。當你的設備進行同步時,數據直接在設備之間傳輸,而不是先上傳到雲端再下載。這意味著:
- 你的私人照片、敏感文檔永遠不會經過任何第三方服務器
- 即使 Syncthing 項目本身停止運營,你的同步系統也能繼續正常工作
- Dropbox 不提供端對端加密,文件對管理員、政府等可見,並且會廣泛收集和分發用戶數據給商業第三方
🔌 極端場景演示:如果你在兩台完全斷開外網、僅通過局域網(甚至是兩台電腦連一根網線)連接的設備上使用 Syncthing,它依然能以極速同步,因為它是真正的 P2P 協議——不需要任何互聯網連接!
🛡️ 安全性(Secure)
所有的通信都使用 TLS 加密。加密方式包括完美前向保密(Perfect Forward Secrecy),防止任何竊聽者獲取你的數據。每個設備都有一個強加密證書,只有你明確允許的設備才能連接到你的其他設備。
根據 Syncthing 官方安全文檔,其安全機制包括以下幾個層面:
安全特性 說明 🔐 TLS 1.2/1.3 加密 所有數據傳輸均使用 TLS 加密,採用 Block Exchange Protocol v1 🔑 設備證書認證 每個 Syncthing 設備生成 ECDSA 設備證書,設備 ID 是該證書的 SHA-256 哈希值 🤝 手動信任建立 連接新設備需要明確批准,必須手動驗證證書指紋 🔄 中繼加密 即使通過中繼服務器傳輸,數據也是端對端加密的,中繼服務器只能看到加密流 🔐 不受信任設備支持 可將設備標記為「不受信任」,強制使用加密密碼共享文件夾 安全最佳實踐提示:
任何能夠訪問你設備上 Syncthing TLS 密鑰和配置文件的人,都可以冒充你的設備、連接你的對等節點,並訪問你的同步文件。如果你的設備丟失,請務必從其他設備上撤銷其訪問權限。如果你在加密磁盤上同步機密數據以防止設備盜竊,請將 Syncthing 配置文件夾也放在同一加密磁盤上,以避免洩露密鑰和元數據。
🌐 開放性(Open)
協議是一個公開的文檔,沒有任何隱藏的魔法。源代碼都在 GitHub 上,你可以看到你得到的是什麼,沒有任何隱藏的惡意。開發和使用都是公開的,任何問題都可以在論壇上討論和解決。
Syncthing 採用 MPL-2.0 開源許可證,這意味著:
- 任何人都可以審計代碼,確保沒有後門或惡意功能
- 社區可以自由地 fork 和改進項目(如 Android 版本的社區分支)
- 項目的發展方向由社區共同決定,而非單一商業公司
三、Syncthing vs 傳統雲存儲:詳細對比
為了幫助你更好地理解 Syncthing 與傳統雲存儲服務的差異,以下是一個詳細的對比表格:
比較項目 Syncthing Dropbox/Google Drive 💰 費用 完全免費(僅需自己的存儲設備) 免費額度有限,超出需付費 📱 設備數量限制 無限制 Dropbox 免費版限制 3 台 🚀 局域網速度 極快(直接設備對設備傳輸) 受限於雲端上傳下載速度 🔒 端對端加密 ✅ 支持 ❌ 不支持(管理員可訪問) 🌐 離線可用性 完全離線可用 需要網絡連接 🔗 文件分享鏈接 不支持公開鏈接 支持一鍵生成分享鏈接 📊 學習曲線 中等(需要理解設備 ID 等概念) 簡單(安裝即用) 🏢 企業支持 社區支持 商業支持團隊 根據 XDA Developers 的實際使用報告,從 Dropbox 切換到 Syncthing 的主要收獲包括:
- 局域網內同步速度顯著提升——當你的設備在同一 WiFi 或以太網時,Syncthing 的速度「快得驚人」
- 完全控制數據存儲位置——不再依賴第三方服務器
- 無存儲空間限制——只要你的硬件有足夠空間
但也需要注意以下權衡:
- 沒有公開分享鏈接功能——如果你經常需要與非 Syncthing 用戶分享文件,這可能是個不便
- 需要一定的技術配置——初次設置需要理解設備 ID、防火牆例外等概念
四、支持的平台
Syncthing 擁有極其廣泛的平台支持,幾乎可以在所有功能性操作系統上運行:
平台類型 支持的系統 備註 🖥️ 桌面系統 Windows、macOS、Linux(各發行版) ✅ 官方支持 🖧 服務器/NAS FreeBSD、Solaris、OpenBSD、NetBSD、Illumos、DragonFly BSD ✅ 官方支持 📱 Android Android 6+ ⚠️ 需使用社區 Syncthing-Fork 📱 iOS iOS 12+ ⚠️ 無官方客戶端,需使用付費第三方應用(如 Möbius Sync) 🔧 特殊架構 RISC-V、ARM(包括樹莓派等) ✅ 官方支持 🏠 Homelab 平台 Umbrel、TiPi、TrueNAS、Unraid、Docker 等 ✅ 社區/官方支持 五、如何安裝部署 Syncthing
Syncthing 的使用也很簡單,只需要幾個步驟:
方法一:官方安裝
下載並安裝 Syncthing。Syncthing 支持多種操作系統和平台。你可以在 官網下載頁面 找到適合你的版本。
2025 年 8 月,Syncthing 發布了重大的 2.0 版本更新,帶來了多項重要變化(截至 2026 年 1 月,最新版本為 2.0.13):
Syncthing 2.0 主要更新 📊 數據庫遷移:從 Google 的 LevelDB 遷移到 SQLite,更易於維護且 bug 更少。注意:首次啟動 2.0 版本時會觸發一次性遷移,大型設置可能需要較長時間 🗑️ 刪除項目策略:刪除的項目不再永久保留在數據庫中,而是在 15 個月後被遺忘(可通過 --db-delete-retention-interval調整)⌨️ 命令行現代化:不再支持舊的單破折號長選項(如 -home必須改為--home)📝 日誌改進:新增 WARNING 日誌級別,INFO 級別更加詳細 🔗 多連接默認啟用:v2 設備之間默認使用三個連接(1 個用於索引元數據,2 個用於數據交換) 📡 UDP 端口映射:支持 QUIC 的 UDP 端口映射,改善特定防火牆後用戶的連接性 🚫 移除滾動哈希:不再支持移位數據的滾動哈希檢測,因為實際效果有限,移除後掃描和同步更快更高效 方法二:Homelab 工具安裝(推薦新手)
一個更加簡單/傻瓜的安裝 Syncthing 的方法是使用 Homelab 工具,比如 Umbrel 或者 TiPi。這些工具提供了一鍵安裝的體驗,無需手動配置。
Docker 安裝方式:
docker pull syncthing/syncthing:2.0.13 # 或者使用 GitHub Container Registry docker pull ghcr.io/syncthing/syncthing:2.0.13🤖 Android 設備安裝
⚠️ 重要提示:原版 Syncthing Android 應用已於 2024 年底停止維護,並已從 Google Play 商店下架(2025 年 5 月起)。這是由於 Google Play 商店的權限限制政策和維護者個人動力原因所導致。
現在 Android 用戶應使用社區維護的 Syncthing-Fork,最新版本為 2.0.12.1(2025 年 12 月發布)。值得一提的是,這個社區分支的功能甚至比原版更豐富且更新更頻繁:
Syncthing-Fork 特性 說明 🔋 省電優化 「每小時同步一次」模式,大幅節省電量,解決了原版的「電池殺手」問題 ⚙️ 精細控制 可為每個設備和文件夾單獨設置同步條件 📱 Android 11+ 支持 支持外部 SD 卡的雙向同步 📊 進度顯示 UI 直接顯示文件夾、設備和整體同步進度 🔍 設備發現 可發現同一網絡上的其他 Syncthing 設備並輕鬆添加 📱 系統要求 最低 Android 6(由於 AndroidX 依賴要求) 安裝方式:
- 推薦:通過 F-Droid 安裝(可獲得自動更新通知,更安全)
- 備選:從 GitHub Releases 下載 APK
從 v1 升級到 v2 的步驟:
設置 → 導出配置 → 卸載 v1 → 安裝 v2 → 設置 → 導入配置
⚠️ 重要:首次啟動後不要強制停止應用!它會執行一次性數據庫遷移,中斷此過程可能損壞配置或數據。
🍎 iOS 設備安裝(特殊情況)
⚠️ 重要提示:由於 iOS 系統的沙盒機制非常嚴格,不允許後台進程自由掃描文件系統,因此始終沒有真正意義上的「官方 Syncthing 客戶端」。
iOS 解決方案 說明 Möbius Sync(推薦) 付費第三方應用,實現 Syncthing 協議,可在 App Store 下載 通過家庭服務器中轉 手機文件先上傳到 NAS/服務器,再由服務器與其他設備同步 💡 選擇建議:如果你的設備生態以 iOS 為主,Syncthing 可能不是最佳選擇。但如果只是作為同步鏈中的一環(如 iPhone → NAS → Windows 電腦),仍然可以通過 Möbius Sync 或間接方式實現。
六、運行並配置 Syncthing
Syncthing 提供了一個基於瀏覽器的用戶界面,你可以通過它來配置和監控 Syncthing。
你可以在瀏覽器中輸入
http://localhost:8384來訪問用戶界面。首次訪問時,建議你立即設置 GUI 密碼以確保安全,特別是如果你的設備可能被他人物理訪問的話。
📂 如何具體使用 Syncthing
步驟一:添加同步文件夾
你可以在用戶界面中添加你想要同步的文件夾,給它一個名稱和路徑。你也可以設置一些選項:
文件夾類型選項:
類型 說明 適用場景 📤 Send Only(僅發送) 此設備只發送文件,不接收其他設備的更改 存放「主副本」的設備 📥 Receive Only(僅接收) 此設備只接收文件,不發送本地更改 備份目標設備 🔄 Send & Receive(發送和接收) 雙向同步(默認) 一般同步需求 版本控制選項詳解:
類型 工作方式 適用場景 🚫 無版本控制 刪除即刪除,無法恢復 不需要歷史版本 🗑️ 回收站式(Trash Can) 文件刪除/覆蓋後移入 .stversions隱藏文件夾簡單恢復需求 📋 簡單版本控制(Simple) 保留指定數量的舊版本 需要保留多個歷史版本 📊 階段式(Staggered) 智能保留:近期密集、遠期稀疏 推薦:平衡存儲與歷史 🔧 外部版本控制(External) 調用自定義腳本處理版本 高級用戶,可集成 Git 等 💡 階段式版本控制的默認策略:
- 最近 1 小時內:保留所有版本
- 最近 1 天內:每小時保留 1 個版本
- 最近 30 天內:每天保留 1 個版本
- 最近 1 年內:每週保留 1 個版本
步驟二:添加同步設備
然後,你可以添加你想要同步的設備,給它一個名稱和 ID。你可以在設備上運行 Syncthing,查看設備的 ID,或者掃描設備上的二維碼。你也可以設置一些選項,比如地址、壓縮、限速等。
設備選項詳解:
- 地址:可設置為
dynamic(自動發現)或指定 IP 地址 - 壓縮:可選擇
All Data(全部壓縮)或Metadata Only(僅元數據壓縮) - Introducer(介紹者):啟用後,該設備可以自動介紹其他設備給你
- 不受信任設備:可將設備標記為不受信任,強制對共享文件夾使用加密
步驟三:選擇同步配對
最後,你可以選擇哪些文件夾和哪些設備要同步,然後保存並應用設置。Syncthing 就會開始在你的設備之間同步文件了。
如果你想要和其他人共享文件夾,你也可以把你的設備 ID 告訴他們,讓他們添加你的設備,並選擇要共享的文件夾。你也可以接受其他人共享給你的文件夾,只要你知道他們的設備 ID,並同意接受。
七、常見使用場景
以下是一些 Syncthing 社區常見的使用場景:
使用場景 說明 📷 手機相機備份 將手機照片自動同步到電腦或 NAS 💻 多設備工作同步 在台式機、筆記本、工作電腦之間保持文件一致 👨👩👧👦 家庭文件共享 家庭成員之間共享照片、視頻等 🎬 視頻/照片編輯 大文件在局域網內快速同步,無網絡延遲 💾 異地備份 在不同地點的服務器之間同步,實現異地容災 🔧 開發環境同步 在不同電腦之間同步代碼和配置文件 家庭多地點備份示例:
一位用戶分享了他的設置:在三個不同地點運行三台服務器互相同步。每個地點都是家庭成員的家,有額外的設備(手機、筆記本、台式機)與本地服務器同步。如果任何手機或服務器損壞,只需更換設備並重新設置同步即可恢復所有文件。
八、進階知識與技巧
以下是一些深入玩家圈子的「冷知識」,幫助你更好地理解和使用 Syncthing。
💡 文件夾 ID 的獨特機制
Syncthing 使用一種唯一的字符 ID 來標識文件夾(類似
abcde-fghij)。💡 冷知識:在不同設備上,你可以為同一個同步文件夾設置完全不同的路徑和顯示名稱,只要它們的「文件夾 ID」一致,軟件就會認為它們是同一個同步對象。
示例:
- 電腦 A:
C:\Users\John\工作文檔→ ID:work-docs - 電腦 B:
/home/john/Documents/Office→ ID:work-docs - 這兩個完全不同的路徑會被視為同一個文件夾進行同步!
🌐 全球發現與中繼服務的真相
你可能會好奇:即便兩台設備都在複雜的企業內網或防火牆後,它們通常也能互相發現並同步。這是如何做到的?
機制 說明 🔍 全球發現服務器 幫助設備找到彼此的 IP 地址 🔄 中繼服務器(Relay) 當直連失敗時,通過中繼轉發數據(數據仍然是端對端加密的) 🌍 冷知識:這些中繼服務器是由全球的志願者無償捐贈運營的。Syncthing 社區維護著一個分布式的中繼網絡,這也是開源精神的體現。
🔒 隱私選項:
如果你對隱私有更高要求,可以在設置中:
- ✅ 關閉「全球發現」—— 僅通過手動輸入地址或局域網發現連接
- ✅ 關閉「中繼」—— 僅限直連,無法直連時不同步
- ✅ 自建中繼服務器 —— 完全控制數據傳輸路徑
⚡ 性能優化:.stignore 文件
Syncthing 為了實時發現文件變化,會使用系統的文件監聽機制。但這可能帶來性能問題:
⚠️ 性能殺手:如果你同步的是包含數百萬個小文件的文件夾(如
node_modules、.git、編譯緩存),過高的掃描頻率會導致 CPU 占用飆升。解決方案:使用
.stignore文件在同步文件夾的根目錄創建
.stignore文件,排除不需要同步的內容:// 常用排除規則示例 // 開發相關 node_modules .git __pycache__ *.pyc .cache dist build // 系統文件 .DS_Store Thumbs.db desktop.ini // 臨時文件 *.tmp *.temp ~*💡 進階技巧:你也可以使用
#include指令引入共用的忽略規則文件,方便在多個文件夾之間統一管理。九、重要提醒:Syncthing ≠ 備份
這是一個常見的誤解,必須澄清:Syncthing 是文件同步工具,而不是備份工具。
同步(Sync) 備份(Backup) 保持多個位置的文件完全相同 創建數據的冗餘副本 刪除會被同步傳播 刪除不會影響備份副本 雙向/多向實時更新 通常是單向、定期的快照 ⚠️ 風險警示:
如果你將手機的「相機照片」文件夾同步到電腦,而手機上的照片被意外刪除(Syncthing 在兩個設備上都運行時),Syncthing 會注意到這個變化並刪除電腦上的同步副本。
更嚴重的情況是:勒索軟件感染任何一台設備後,可能會導致所有設備都收到被加密/損壞的數據。
推薦的安全策略:
- 啟用版本控制:在接收設備上設置「Staggered」階段式版本控制
- 使用 Send Only 模式:在「主副本」設備上設置為僅發送,防止接收端意外覆蓋源數據
- 配合傳統備份:建議將重要文件保存在至少兩個外部驅動器上——一個作為日常備份,另一個作為週/月備份,存放在不同位置
总之,Syncthing 是一個強大、便攜、易用的文件同步工具,它可以讓你在你自己的設備之間同步文件,而不需要任何第三方服務。你可以完全控制你的數據,選擇它存儲的位置,是否與其他人共享,以及如何在網絡上傳輸。特別是在雲存儲服務不斷收緊限制、隱私問題日益受到關注的今天,掌握一個去中心化的同步工具變得越來越重要。
歡迎留言回复交流。
Log in to reply.