Syncthing 是两台机器之间的文件同步工具:不走云盘中转,设备之间直接连,改一个字节另一头就跟着变。它是 Go 写的单文件程序,自带网页控制台。这篇在 Windows 上从启动跑到加两个文件夹、看扫描耗时,把接口和界面上的数字都记了下来。

34.8 MB 的单文件,1.56 秒起服务

发布包      syncthing-windows-amd64-v2.1.7.zip,14,281,765 字节
解压后      syncthing.exe,34,802,944 字节
版本        v2.1.7
启动参数    --home=配置目录 --gui-address=127.0.0.1:8385 --no-browser --no-restart
启动耗时    1.56 秒(从进程起到 8385 端口可连)
配置目录    config.xml,8,638 字节

不用安装,解压就能跑。配置全放在 --home 指定的目录里,一个 config.xml 加若干数据库文件,拷走就能搬到别的机器。默认监听 8384,这次用 --gui-address 改到 8385,避免和这台电脑上别的东西撞端口。

自动生成设备 ID 和 32 位 API Key

设备 ID     形如 GXM2EHL-LPXSQGA-TVOL...(7 组,每组 7 位)
API Key     config.xml 里的 <apikey>,32 个字符
调用方式    请求头带 X-API-Key
读取路径    GET /rest/system/version、/rest/system/status、/rest/db/status

首次启动会自己生成密钥对和设备 ID,同时写进配置。所有 /rest/ 接口都要带这个 API Key,控制台里的请求是登录态自动带上的,写脚本就得自己加请求头。接口地址和网页同源,都在 8385 上。

加文件夹不用点界面

PUT /rest/config/folders/shiceku-docs
{"id":"shiceku-docs","label":"实测库共享","path":"D:\\...\\share",
 "type":"sendreceive","devices":[{"deviceID":"<设备 ID>"}]}

配置类接口是整段 JSON 覆盖写,改完立刻生效,不用重启。文件夹要带上自己的设备 ID,否则这个文件夹不属于任何设备。界面上的「+ Add Folder」按钮做的是同一件事,只是带了表单校验。

500 个文件首次扫描 0.31 秒

文件夹文件数占用状态
实测库共享201(含 1 个子目录)18,409 字节idle
五百个文件5006,390 字节首次扫描 0.31 秒
增量重扫未变化—0.27 秒

扫描是小文件密集场景,五百个几字节的文本半秒内建完索引。已经扫过的文件夹再点 Rescan,0.27 秒就回到 idle,因为比较的是修改时间与大小。真正的瓶颈在传输,不在索引。

接口返回 0.7 毫秒,界面三个数

GET /rest/db/status?folder=<id>
五次耗时    0.9 / 0.8 / 0.7 / 0.7 / 0.7 毫秒
关键字段    globalFiles、localFiles、globalBytes、localBytes、state、ignorePatterns

状态接口是纯读内存,亚毫秒级。网页上对应显示三块:Folders 区列出每个文件夹并标 Unshared,This Device 区给出 Local State(701 files、1 folder、约 24.2 KiB)、Listeners 3/3、Discovery 5/5 和 Uptime,右下角 Remote Devices 区是空的。

绿条横幅:GUI 还没设密码

第一次打开控制台,顶上有一条绿色提示,写着没给界面设用户名和密码,同一台电脑上的人都能进来翻文件。点它右边的 Settings 进 General 标签,能改设备名、最低剩余磁盘空间(默认 1%)、重新生成 API Key,还能关掉匿名使用统计(默认 Disabled)和把自动升级限定在 Stable。

Settings → General 实测默认值
Device Name               WIN-75APVMCL6D0
Minimum Free Disk Space   1%
Anonymous Usage Reporting Disabled
Automatic upgrades        Stable releases only

这条横幅不是错误,是安全提醒。只在一台机器上试功能可以先不管,一旦挂到局域网,先把用户名密码设上再开端口。

只配一台设备,同步不会发生

这套流程的局限在于:如果只添加了本地一台设备,文件夹会一直挂着 Unshared 标签,数据只在本地建索引,永远不会真正同步到别处。要看到双向同步,得在第二台机器上也装一份,把两边的设备 ID 互相加进对方配置,再共享同一个文件夹 ID。本次只验证了索引与界面,没有第二台机器参与,所以传输速率、冲突处理这些数字都没有实测。

实测范围:Windows 10 22H2(10.0.19045.6466) / Syncthing v2.1.7 / 2026-10-22。设备间传输、版本控制、中继与打洞、文件冲突、GUI 鉴权后的登录流程都没有验证,不作结论。