3.6 萬 Star!開源跨平臺的文件同步工具
簡介
Syncthing 采用 Go 語言編寫,它是一個(gè)免費(fèi)的、跨平臺的文件同步工具,其獨(dú)有的對等自由塊交換協(xié)議,可以在兩臺甚至更多的計(jì)算機(jī)之間同步文件,同步意味著在其中一臺設(shè)備上進(jìn)行的創(chuàng)建、修改或刪除文件的操作,都會(huì)被其他設(shè)備看見。
Syncthing 只會(huì)在同步的設(shè)備之間傳輸數(shù)據(jù),不會(huì)上傳到云中。
Syncthing同步文件具有以下特點(diǎn):
- 防止數(shù)據(jù)丟失。這是文件同步最重要的目標(biāo),保護(hù)數(shù)據(jù)避免損壞。沒有這個(gè)目標(biāo),同步文件將毫無意義。Syncthing不會(huì)為了性能或在某些情況下甚至是可用性而進(jìn)行不安全的折衷。
- 防范攻擊者。保護(hù)用戶數(shù)據(jù)至關(guān)重要,不能讓用戶的數(shù)據(jù)收到第三方的竊聽或修改。
- 易用性。復(fù)雜的概念和數(shù)學(xué)構(gòu)成Syncthing功能的基礎(chǔ),但是對于普通用戶來說不需要關(guān)心底層實(shí)現(xiàn),其使用方法非常簡單,
- 自動(dòng)化。Syncthing會(huì)自動(dòng)化處理很多問題而無需用戶干預(yù),獲取對文件的更改,解決沖突,維護(hù)連接等。
- 通用性。保持在各個(gè)平臺上使用的通用性。
項(xiàng)目地址是:
https://github.com/syncthing/syncthing
簡單使用
Syncthing提供了很簡易的安裝方式,linux下直接解壓安裝包,windows則提供了exe文件供安裝,另外社區(qū)還提供了Android等安裝包。
以命令行啟動(dòng),并輸出以下內(nèi)容(也可以在可視化系統(tǒng)中雙擊啟動(dòng),這里只是為了了解細(xì)節(jié)才使用命令行):
- > 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
管理員頁面會(huì)自動(dòng)啟動(dòng),訪問http://localhost:8384/即可。
左側(cè)是“Folders”列表,代表要同步的目錄,此時(shí)尚未與其他設(shè)備共享,因此當(dāng)前狀態(tài)為“Unshared”,文件夾狀態(tài)還包括Paused、Stopped、Up to Date等狀態(tài)。
右邊是設(shè)備列表,表示與當(dāng)前設(shè)備連接的設(shè)備,包括本地設(shè)備。本地設(shè)備始終位于頂部,而遠(yuǎn)程設(shè)備則按字母順序排列。對于每個(gè)設(shè)備,都可以查看到當(dāng)前狀態(tài)以及更多的詳細(xì)信息,如傳輸速率、數(shù)據(jù)總量等。
為了使Syncthing能夠與另一臺設(shè)備同步文件,必須告知該設(shè)備另一臺設(shè)備的相關(guān)信息。Syncthing通過交換“設(shè)備ID”來實(shí)現(xiàn)。設(shè)備ID是唯一的加密安全標(biāo)識符,該標(biāo)識符在首次啟動(dòng)Syncthing時(shí)作為密鑰生成的一部分生成。它被打印在上面的日志中,您可以通過選擇“Actions”(右上角)和“Show ID”在Web GUI中看到它。
如果兩個(gè)設(shè)備都配置有彼此的設(shè)備ID,則它們會(huì)相互連接并通話。由于配置必須是相互的,因此不需要將設(shè)備ID保密。它們本質(zhì)上是公鑰的一部分。
要使兩個(gè)設(shè)備互相通信,請單擊兩個(gè)設(shè)備右下角的“Add Remote Device”,然后輸入另一側(cè)的設(shè)備ID,還要選擇共享的文件夾。設(shè)備名稱是可選的,可以隨時(shí)更改。
單擊“Save”后,新設(shè)備將出現(xiàn)在GUI的右側(cè),然后在大約一分鐘后連接到新設(shè)備。另一臺設(shè)備也需要重復(fù)以上步驟。
此時(shí),兩個(gè)設(shè)備共享一個(gè)空目錄。將文件添加到任一設(shè)備上的共享目錄會(huì)將這些文件同步到另一端。
Syncthing還有命令行的使用方法,感興趣的讀者自己去嘗試吧。