簡介
Syncthing 采用 Go 語言編寫,它是一個免費的、跨平臺的文件同步工具,其獨有的對等自由塊交換協議,可以在兩臺甚至更多的計算機之間同步文件,同步意味著在其中一臺設備上進行的創建、修改或刪除文件的操作,都會被其他設備看見。
Syncthing 只會在同步的設備之間傳輸數據,不會上傳到云中。
Syncthing同步文件具有以下特點:
- 防止數據丟失。這是文件同步最重要的目標,保護數據避免損壞。沒有這個目標,同步文件將毫無意義。Syncthing不會為了性能或在某些情況下甚至是可用性而進行不安全的折衷。
- 防范攻擊者。保護用戶數據至關重要,不能讓用戶的數據收到第三方的竊聽或修改。
- 易用性。復雜的概念和數學構成Syncthing功能的基礎,但是對于普通用戶來說不需要關心底層實現,其使用方法非常簡單,
- 自動化。Syncthing會自動化處理很多問題而無需用戶干預,獲取對文件的更改,解決沖突,維護連接等。
- 通用性。保持在各個平臺上使用的通用性。
項目地址是:
https://github.com/syncthing/syncthing
簡單使用
Syncthing提供了很簡易的安裝方式,linux下直接解壓安裝包,windows則提供了exe文件供安裝,另外社區還提供了Android等安裝包。
以命令行啟動,并輸出以下內容(也可以在可視化系統中雙擊啟動,這里只是為了了解細節才使用命令行):
- > syncthing
- [monitor] 22:56:32 INFO: Log output saved to file "C:\Users\User\AppData\Local\Syncthing\syncthing.log"
- [monitor] 22:56:32 INFO: Default folder created and/or linked to new config
- [start] 22:56:32 INFO: syncthing v1.7.1 "Fermium Flea" (go1.14.4 windows-386) teamcity@build.syncthing.net 2020-07-11 18:17:41 UTC
- [start] 22:56:32 INFO: Default folder created and/or linked to new config
- [start] 22:56:32 INFO: Default config saved. Edit C:\Users\User\AppData\Local\Syncthing\config.xml to taste (with Syncthing stopped) or use the GUI
- [6FOKX] 22:56:33 INFO: My ID: 6FOKXKK-SKUBWFW-GSKX6IQ-ZC4SYUZ-5IEVZKE-TC42AAX-HW7IBW4-GAZFAQ7
- [6FOKX] 22:56:34 INFO: Single thread SHA256 performance is 123 MB/s using crypto/sha256 (108 MB/s using minio/sha256-simd).
- [6FOKX] 22:56:34 INFO: Hashing performance is 106.31 MB/s
- [6FOKX] 22:56:34 INFO: Overall send rate is unlimited, receive rate is unlimited
- [6FOKX] 22:56:34 INFO: Using discovery server https://discovery.syncthing.net/v2/?noannounce&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW
- [6FOKX] 22:56:34 INFO: Using discovery server https://discovery-v4.syncthing.net/v2/?nolookup&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW
- [6FOKX] 22:56:34 INFO: Using discovery server https://discovery-v6.syncthing.net/v2/?nolookup&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW
- [6FOKX] 22:56:34 INFO: Ready to synchronize "Default Folder" (default) (sendreceive)
- [6FOKX] 22:56:34 INFO: QUIC listener ([::]:22000) starting
- [6FOKX] 22:56:34 INFO: TCP listener ([::]:22000) starting
- [6FOKX] 22:56:34 INFO: Relay listener (dynamic+https://relays.syncthing.net/endpoint) starting
- [6FOKX] 22:56:34 INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
- [6FOKX] 22:56:34 INFO: GUI and API listening on 127.0.0.1:8384
- [6FOKX] 22:56:34 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
- [6FOKX] 22:56:34 INFO: My name is "This computer"
- [6FOKX] 22:56:45 INFO: quic://0.0.0.0:22000 detected NAT type: Symmetric NAT
- [6FOKX] 22:56:45 INFO: quic://0.0.0.0:22000 resolved external address quic://125.190.151.7:59296 (via stun.syncthing.net:3478)
- [6FOKX] 22:56:46 INFO: Detected 0 NAT services
管理員頁面會自動啟動,訪問http://localhost:8384/即可。
左側是“Folders”列表,代表要同步的目錄,此時尚未與其他設備共享,因此當前狀態為“Unshared”,文件夾狀態還包括Paused、Stopped、Up to Date等狀態。
右邊是設備列表,表示與當前設備連接的設備,包括本地設備。本地設備始終位于頂部,而遠程設備則按字母順序排列。對于每個設備,都可以查看到當前狀態以及更多的詳細信息,如傳輸速率、數據總量等。
為了使Syncthing能夠與另一臺設備同步文件,必須告知該設備另一臺設備的相關信息。Syncthing通過交換“設備ID”來實現。設備ID是唯一的加密安全標識符,該標識符在首次啟動Syncthing時作為密鑰生成的一部分生成。它被打印在上面的日志中,您可以通過選擇“Actions”(右上角)和“Show ID”在Web GUI中看到它。
如果兩個設備都配置有彼此的設備ID,則它們會相互連接并通話。由于配置必須是相互的,因此不需要將設備ID保密。它們本質上是公鑰的一部分。
要使兩個設備互相通信,請單擊兩個設備右下角的“Add Remote Device”,然后輸入另一側的設備ID,還要選擇共享的文件夾。設備名稱是可選的,可以隨時更改。
單擊“Save”后,新設備將出現在GUI的右側,然后在大約一分鐘后連接到新設備。另一臺設備也需要重復以上步驟。
此時,兩個設備共享一個空目錄。將文件添加到任一設備上的共享目錄會將這些文件同步到另一端。
Syncthing還有命令行的使用方法,感興趣的讀者自己去嘗試吧。