目录
本文将介绍分布式文件同步工具Syncthing的使用方法。实验室为每位同学配备了台式机,通常我们自己手上还有一台电脑,当需要在宿舍或者家中处理数据时会有同步数据的需求,而每天向U盘拷贝数据不仅对耐心是一种考验,有时还会面临失手拷错数据或者干脆忘带U盘的尴尬。
这里我们介绍一款免费的、开源的、分布式(不依赖第三方服务器)的同步工具Syncthing,帮助我们在两台(或更多)设备之间自动同步数据。本软件支持Windows, Mac OS, Linux, Android等操作系统(暂不支持iOS系统)。本教程基于Windows操作系统,其它平台的使用方法非常相似,可作参考。
开始之前,我们需要准备两台电脑,并下载Syncthing,官网:https://syncthing.net/downloads/(文末也提供Windows安装包下载,需要最新版本的朋友请到官网寻找)。
Windows用户请点击SyncTrayzor,Mac OS用户请点击syncthing-macos。注意:不要下载下方的Syncthing,该版本没有图形界面,也不能设置开机启动等功能。

Figure 2-1. Syncthing官网下载页截图
Windows: 将页面拉到最底,点击文件名下载软件包。Setup为标准安装程序,Portable为免安装版,建议使用Setup安装程序。32位系统选择x86,64位系统选择x64。安装版双击开始安装;免安装版下载完成后将压缩包解压,双击SyncTrayzor.exe运行。
Mac OS:下载dmg文件,双击安装。

Figure 2-2. Windows客户端SyncTrayzor下载页截图
注意:Syncthing是内核,是真正执行同步操作的软件,更新频率较高;SyncTrayzor是封装了Syncthing内核的图形化软件界面,更新频率较低。SyncTrayzor所包含的Syncthing版本较旧,第一次启动SyncTrayzor时就会提示你升级。出于安全考虑,请立即更新到最新版本的Syncthing。

Figure 2-3. 更新Syncthing内核
在需要同步的两台电脑上分别安装好Syncthing之后,我们就可以开始同步文件夹了。
第1步:添加设备。
首先,我们需要让两台电脑找到对方。为方便描述,接下来分别称两台电脑为A和B。在电脑A中,点击SyncTrazor界面右上角的操作→显示ID,会显示电脑A的ID与对应的二维码。

Figure 3-1a. 查看电脑A的ID
将电脑A的ID复制下来,发送到电脑B上操作。在电脑B的界面中,点击“添加远程设备”,在“设备ID”栏中填入刚才复制的设备A的ID号,在“设备名”栏中自行填写一个备注名,如:电脑A。

Figure 3-1b. 在电脑B上添加远程设备电脑A
回到电脑A,等待界面中出现是否添加设备的提示,确认并填写设备名备注,进入下一步。

Figure 3-1c. 在电脑A上确认添加电脑B
第2步:共享文件夹
不妨设你在电脑A上有一些数据需要同步到电脑B上。在电脑A点击界面上的“添加文件夹”,弹出添加文件夹面板。在文件夹路径处选择要同步的文件夹的路径;在文件夹标签处填入方便识别的名称,这里以“我的文档”为例;文件夹ID为程序自动生成的标识符,不必修改。

Figure 3-2a 电脑A添加文件夹面板-常规
接下来,点击共享面板,勾选要同步的设备电脑B。

Figure 3-2b 电脑A添加文件夹面板-共享
最后,点击版本控制面板,选择回收站式版本控制。在这一模式下,被其它设备更改或删除的文件在同步后将把原文件被移动到.stversions文件夹中。例如,我的文档中有一个test.txt,内容为aaa,在电脑A上将中的文本aaa改为bbb,在电脑B上完成同步后,test.txt随之变为包含文本bbb,而包含文本aaa的原文件被移动到我的文档下的.stversions文件夹保存。不启用版本控制时Syncthing会直接删除被远端删除的文件,而不会移动到系统回收站中。因此,为了确保你的数据安全,请永远不要使用不启用版本控制的选项!

Figure 3-2c 电脑A添加文件夹面板-版本控制
点击保存,电脑A的设置步骤就完成了。现在来到电脑B,等待界面上弹出对话框,点击添加后重复前述步骤分别设置文件夹路径、版本控制即可。

Figure 3-2d 电脑B确认同步文件夹
保存设置,等待同步完成。

Figure 3-2d 正在同步时的界面
1) Syncthing与使用网盘有何区别?
速度:Syncthing是一款端到端的同步软件,数据传输速度主要由两台设备间的链路速度决定,也就是说在千兆局域网中的两台设备进行同步,可以跑到100 MB/s的速度,并且完全免费。相比之下,国内的网盘不开会员将被限速,国外的网盘则经常连不上,连上了也要看梯子的速度,总之很难跑满带宽。
安全:Syncthing是一款端到端的同步软件,数据直接在两台同步的设备上传递,不存储在第三方服务器上,极大提高了敏感数据(比如你的实验数据)的安全性。凡是网盘,都有潜在的数据安全问题,这里的安全一是指服务器网盘遭受攻击导致的敏感数据泄露,二是指平台方随时可以用任何理由,包括但不限于相关资源涉嫌违反法律法规、网盘停止运营等,使用户无法取回文件。简而言之任何文件放上去网盘之后控制权就不再完全由自己掌握了。
分享:Syncthing是一款端到端的同步软件,你可以用它来与朋友直传文件,但无法实现在互联网上向不特定群体分享文件的功能。我们至今离不开网盘,原因就在于人们需要在互联网上分享各种各样的资料。本人使用网盘的场景亦仅限于下载网络上分享的各种资源文件,从不用于备份数据。基于端到端、无服务器存储的文件分享软件实际上也存在(原理类似于BT种子),最出名的是Resilio Sync (曾用名BT Sync),不过在国内无法正常使用。
2) 同步文件时需要保持两台电脑同时打开吗?
是的,请记得不要关闭实验室的电脑。当然,保持自己的电脑打开也可以。
3) 可以三个或更多设备同步同一文件夹吗?
当然可以。注意,电脑A与电脑B正在同步,此时仅添加电脑A与电脑C的同步,则电脑C可以通过电脑A与电脑B同步,但当电脑A关闭时,电脑B与电脑C将不能同步数据。因此,为了确保文件同步正常进行,你需要两两添加远程设备。
4) 在未开启同步的情况下在两台电脑上分别修改同一文件会发生什么?
不必担心,发生这种情况的时候syncthing会提示你文件存在冲突,这个文件的同步不会进行,另一台设备上的版本会被下载下来,并有conflict的文件名后缀。你可以根据需要合并修改后再在syncthing中根据界面指引选择需要的版本,完成同步操作。
1) 开机启动
SyncTrayzor安装后默认开机启动。如果你不需要开机启动,可按以下步骤设置。右键单击系统托盘中的SyncTrayzor图标,点击设置。去除勾选随开机自动启动。不过,为了避免你忘记打开软件而忘记同步,建议保持开机启动状态。

Figure 5-1 设置开机启动
2) 版本控制
前面提到的版本控制有多个选项。回收站版本控制中,仅保留最近一个被修改的文件版本;简易版本控制中,可以设置保留多个被修改的文件版本,默认为保留5个版本;阶段版本控制按照一定规则保留一段时间内的被修改的文件版本,具体规则请见下图。你可以视情况选择需要的文件版本控制。

Figure 5-2 阶段版本控制
3) 排除文件
有时我们要同步某个文件夹时,又不希望同步其中的某些文件,这时可以使用文件夹设置面板中的忽略模式进行设置。Office打开会产生旧版本的doc/ppt文件时会产生$开头的隐藏文件,建议排除。写程序的朋友们注意把各种临时文件排除出去。具体写法参考下图中的提示。

Figure 5-3 设置排除文件规则
4) 拉取顺序
拉取的意思就是从远程计算机下载更新版本的文件。Syncthing默认的拉取顺序是随机顺序,在高级面板中可以设置。这里我推荐总是选择旧文件优先,这样在文件夹中按照时间排序的时候可以保持相同的顺序。

Figure 5-4 拉取顺序
你可能会遭遇这些问题,也可能不会,因为这些bug或者特性是会随windows版本和Syncthing版本发生一些变化的。你可以先跳过此节,下载并使用syncthing,在遇到下述问题之后再查看以下内容。
1) 文件名大小写更改或用同一文件覆盖后无法同步
将这个同步失败的文件移动到其它位置,等待Syncthing显示同步完成后,再将该文件移动到原来的位置即可。
具体场景:Windows系统中的文件名是不区分英文大小写的,比如说在同一个文件夹中不能同时存在test.txt和Test.txt。然而在文件管理器中你的的确确是可以看到文件名中既有大写又有小写,如果要将test.txt改名成大写,需要先删掉一个字符(比如est.txt)再改成Test.txt,否则修改后在文件管理器中仍然会显示test.txt (注: win10 1909版本后似乎可以直接修改了)。尽管修改了大小写后在文件系统中它还是同一个文件,syncthing也会认为test.txt被删除了,产生了Test.txt的新文件,并尝试同步。处于某种原因,syncthing并不能正常同步这次文件名修改。同样的情况也发生在使用相同文件进行覆盖时,比如在另一个文件夹中也有内容相同的test.txt,将其复制到被同步的文件夹中覆盖掉原来的test.txt,syncthing同样会提示同步失败(其实同步已经完成,因为并没有任何修改)。解决的办法就是将这个同步失败的文件移动到其它位置,等待Syncthing显示同步完成后,再将该文件移动到原来的位置即可。
2) 同步错误已清除但托盘图标仍显示叹号
出现这种情况时,退出SyncTrayzor后重新启动SyncTrayzor即可。
具体场景:有时同步会发生错误,比如前一条所说的情况,又比如同步到一半网络发生中断,此时系统托盘会显示一个叹号,并且打开synctrayzor界面有黄色条幅提示发生了错误。某些情况下,即使错误解决,打开synctrayzor界面也不再有黄色条幅,但托盘图标中仍显示叹号。出现这种情况时,退出SyncTrayzor后重新启动SyncTrayzor即可。
3) 超长文件路径导致的文件管理器崩溃
使用DiskGenius进行文件操作。
具体场景:通常我会将下载的论文的文件名改成论文的标题,有时文件名就会非常长。当我对这个文件进行修改后(比如添加一些标记),旧版本文件会被移动到.stversions的文件夹中,并添加时间戳后缀,这样文件路径又长了不少,有时打开.stversions清理旧版本文件的时候文件管理器就会卡死崩溃。这个bug源于Windows文件管理器出于某种原因不支持256字节及以上的超长文件路径。文件系统和操作系统层面上其实支持最长32767字节的文件路径,否则syncthing也不可能完成文件操作。如果你是要删除旧版本文件来腾出硬盘空间,你可以在syncthing中的历史记录中删除相应的旧版本文件。你也可以使用其它软件进行文件操作,如DiskGenius(官网: https://www.diskgenius.cn/)。
Syncthing很好很强大,只是出于开源软件的禀性,它的设置也比较繁杂,不那么容易上手,希望这篇教程能带给你良好的文件同步体验。
此文档更新版本以维基版本为准
All Rights Reserved ©
2025
Current Time: 12:44:24 GMT+8
All animals are equal, but some animals are more equal than others. - Animal Farm, George Orwell