Syncthing 同步方案:Windows 与 Debian 双向同步
本文适合想要把 Windows 重要数据备份/同步到 Linux 服务器的用户。你会学到:Windows 上用 nssm 把 Syncthing 注册为开机自启服务、Debian 12 上用 systemd 部署,以及 Windows 整盘同步时 System Volume Information 权限报错的解决办法。
1. 背景
因为旧电脑突然故障,我的部分重要数据被丢失(没养成备份数据的习惯!!!)。因此我需要备份windows上的重要数据。选来选去,我最终选择syncthing 。
2. 工具介绍
介绍 Syncthing 工具的主要特点和优势。
Syncthing 是一个使用 Go 语言来发的开源文件同步工具,可以在多台计算机之间实时同步文件。它致力于保护用户数据,确保安全、易于使用,并且可以在各种常见的计算机上运行。
- 安全性和隐私
Syncthing基于 P2P 技术 实现设备间的文件同步,所以它的同步是 去中心化 的,即你并不需要一个服务器,故不需要担心这个中心的服务器给你带来的种种限制。Syncthing致力于保护用户数据,确保不会丢失或损坏。它使用TLS加密来保护通信,并采用完美前向保密以防止窥探者获取数据。每个设备都使用强加密证书进行身份验证,只有经过明确允许的设备才能连接到其他设备。
- 易用性和功能
Syncthing旨在易于使用,可以在各种操作系统上运行,包括macOS、Windows、Linux等。它可以同步多个文件夹,支持局域网和互联网上的同步,无需复杂的IP地址或高级配置。用户只需将设备ID分享给其他设备,即可进行文件夹共享

3. win上部署syncthing
下载 syncthing
从syncthing 发布页下载下在适用于windows平台的syncthing,解压后会得到解压安装包,然后双击syncthing.exe打开。

出现这个界面后,可以看见web界面访问地址。初次安装应该会直接在浏览器中打开该地址,然后有一个提示对话框,匿名报告相关的,可以选择否。

使用nssm将syncthing注册成服务
首先以管理员身份运行powershell运行一下命令
nssm.exe edit syncthing
Application选项卡的参数如下。
Path:D:\install\syncthing\syncthing.exe #syncthing.exe的路径
Startup directory:D:\install\syncthing #syncthing.exe所在的目录
Ardumens;serve --no-browser --no-restart --logflags=0 #syncthing启动参数

Details选项卡中的Startup type的参数选择Automatic(即开机自启)

在
Log on选项卡下使用本地用户账户(非系统账户或者管理员账户)登录。syncthing推荐不适用系统账户或者管理员账户运行sync thing

在
IO选项卡上设置日志目录

使用浏览器打开syncthing
syncthing默认监听 127.0.0.1:8384 ,在浏览输入http://127.0.0.1:8384/ 即可打开 syncthing gui界面。

在debian12上部署syncthing
在syncthing发布页下载适用于debian12的二进制文件。
wget https://github.com/syncthing/syncthing/releases/download/v1.30.0-rc.1/syncthing-linux-amd64-v1.30.0-rc.1.tar.gz
解压后得到二进制文件
mkdir /opt/syncthing && cd /opt/syncthing
tar -zxf syncthing-linux-amd64-v1.30.0-rc.1.tar.gz
cd syncthing-linux-amd64-v1.30.0-rc.1 && chmod+x syncthing && mv syncthing /opt/syncthing
添加 syncthing 用户用于运行syncthing
adduser --system --no-create-home --group syncthing
chown -R syncrhing:syncthing /opt/syncthing/
注册systemd服务
nano /lib/systemd/system/syncthing.service
root@nl-bwg:~/syncthing-linux-amd64-v1.30.0-rc.1# cat /lib/systemd/system/syncthing.service
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
StartLimitIntervalSec=60
StartLimitBurst=4
[Service]
User=syncthing
Environment=HOME=/opt/syncthing
ExecStart=/opt/syncthing/syncthing serve --no-browser --no-restart --logflags=0 --gui-address=[host:port]
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true
# Elevated permissions to sync ownership (disabled by default),
# see https://docs.syncthing.net/advanced/folder-sync-ownership
#AmbientCapabilities=CAP_CHOWN CAP_FOWNER
[Install]
WantedBy=multi-user.target
配置同步文件夹
添加设备
这里需要用到工具的ID,先去服务端查看,启动服务的时候就会显示,现在可以通过web界面进行查看。客户端同理。


刚才复制的是服务端的ID,那么现在就打开客户端的web管理界面。


如果只是局域网操作,这里直接保存即可。
如果想公网访问,就可以内网穿透工具。在服务器搭建内网穿透工具,可以使用 tailscale
配置Debian服务端。打开服务端的web界面。

创建共享文件夹
在 Windows 创建共享文件夹


文件夹共享给Debian。

文件夹版本控制。官方文档的文件版本控制介绍。


到这点Windows的就配置好了。
Debian 服务端添加被分享的文件夹

可以看见出现了一个新文件夹,这时点击添加即可。如果没有出现,可能的原因是服务端这边还没有与Windows进行连接。再次检查一下远程设备是否已经同步完成。

这里选择共享给Windows,这样就可以把Debian变化后的文件也同步到Windows里面。

这样就实现了简单的双向同步文件。
踩坑
syncthing无法打开被分享的文件夹

问题分析
查看日志如下
2025-06-13 21:33:41.614: [BETJW] INFO: Scanner (folder "电脑上的E盘" (home:E://), item "System Volume Information"): scan: open \\?\E:\System Volume Information: Access is denied.
2025-06-13 21:33:41.794: [BETJW] INFO: Scanner (folder "电脑上的E盘" (home:E://), item "System Volume Information"): scan: open \\?\E:\System Volume Information: Access is denied.
2025-06-13 21:33:41.966: [BETJW] INFO: Scanner (folder "电脑上的E盘" (home:E://), item "System Volume Information"): scan: open \\?\E:\System Volume Information: Access is denied.
2025-06-13 21:33:42.131: [BETJW] INFO: Scanner (folder "电脑上的E盘" (home:E://), item "System Volume Information"): scan: open \\?\E:\System Volume Information: Access is denied.
2025-06-13 21:33:42.289: [BETJW] INFO: Scanner (folder "电脑上的E盘" (home:E://), item "System Volume Information"): scan: open \\?\E:\System Volume Information: Access is denied.
2025-06-13 21:33:42.777: [BETJW] INFO: Scanner (folder "电脑上的E盘" (home:E://), item "System Volume Information"): scan: open \\?\E:\System Volume Information: Access is denied.
2025-06-13 21:33:43.331: [BETJW] INFO: Scanner (folder "电脑上的E盘" (home:E://), item "System Volume Information"): scan: open \\?\E:\System Volume Information: Access is denied.
2025-06-13 21:33:43.498: [BETJW] INFO: Scanner (folder "电脑上的E盘" (home:E://), item "System Volume Information"): scan: open \\?\E:\System Volume Information: Access is denied.
2025-06-13 21:33:44.704
System Volume Information 是 Windows 系统自动创建的隐藏系统文件夹,用于:
- 系统还原点(System Restore)
- 卷影复制(Shadow Copies)
- 索引服务
- 存储一些 NTFS 元数据
该目录默认只有 系统账户(SYSTEM) 有权限访问,普通用户(包括管理员)和程序 都无法直接访问这个文件夹,即使你是管理员。
Syncthing 报错原因:
Syncthing 在对整个 E: 盘进行扫描同步时,试图进入这个系统文件夹,结果因为权限不足而报错。
解决方法
排除该目录
你可以在 Syncthing 的文件夹设置中,添加 排除项(Ignore Patterns) 来避免扫描这个目录。
步骤:
- 打开 Syncthing 的 Web 界面;
- 找到同步的"电脑上的E盘"目录;
- 编辑该文件夹的"忽略列表";
- 添加以下一行:
System Volume Information/
或者更保险地写:
(?i)System Volume Information/
((?i) 表示忽略大小写)

验证与自查
- Windows 与 Debian 的 WebGUI 远程设备列表中都显示对方"已连接"
- 在 Windows 的 E 盘新建测试文件,Debian 对应目录自动出现;反向修改也会同步回 Windows
- 同步日志中不再出现
System Volume Information: Access is denied报错 - 重启 Windows 后
nssm服务自动拉起 syncthing(任务管理器/服务列表确认),Debian 侧systemctl is-enabled syncthing返回enabled