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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
管理员页面会自动启动,访问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还有命令行的使用方法,感兴趣的读者自己去尝试吧。