Syncthing 2.0 发布
Syncthing 是一款连续文件同步程序。它能在两台或多台计算机之间同步文件。
2.0 版本的重大变更
- 数据库后端从 LevelDB 切换为 SQLite。首次启动时会进行数据迁移,
对于大型环境可能需要较长时间。新数据库更易于理解和维护,
且希望能减少 bug。 - 日志格式已更改为使用结构化日志条目(一条消息
加上多个键值对)。此外,现在可以按包控制日志级别,
并在 INFO 和 ERROR 之间新增了 WARNING 日志级别(此前该级别称为 WARNING…)。
INFO 级别的日志内容更加详细,会显示 Syncthing 执行的同步操作。一个
新的命令行标志--log-level
用于设置所有包的默认日志级别,
而STTRACE
环境变量和 GUI 已更新以支持按包设置日志级别。
--verbose
和--logflags
命令行选项已被移除,若指定将被忽略。 - 已删除的项目不再永久保存在数据库中,而是会在六个月后被遗忘。
如果您的用例需要删除操作在六个月后生效,请将
--db-delete-retention-interval
命令行选项或对应的
环境变量设置为零,或您选择的更长时间间隔。 - 现代化的命令行选项解析。旧的单破折号长选项不再支持,例如
-home
必须以--home
形式指定。部分选项已重命名,其他选项已转换为子命令。所有服务选项现在也可作为环境变量接受。
参见syncthing --help
和syncthing serve --help
以获取详细信息。 - 滚动哈希检测已不再支持,因为这实际上从未起到作用。取而代之的是, 请参阅
syncthing --help
和
syncthing serve --help
以获取详细信息。 - 滚动哈希检测已不再支持,因为这实际上从未起到作用。相反,
在没有此功能的情况下,扫描和同步速度更快且更高效。 - 首次启动时不再创建“默认文件夹”。
- v2 设备之间默认使用多个连接。新默认值为使用三个连接:
一个用于索引元数据,两个用于数据交换。 - 由于与 SQLite 交叉编译相关的复杂性,以下平台不再提供
syncthing.net 和 GitHub 上的预编译二进制文件:- dragonfly/amd64
- illumos/amd64 和 solaris/amd64
- linux/ppc64
- netbsd/*
- openbsd/386 和 openbsd/arm
- windows/arm
- 涉及已删除文件的冲突解决处理方式已更改。现在,
删除操作可以成为冲突解决的胜出结果,导致
已删除的文件被移动到冲突副本中。

本次发布还以以下形式提供:
- APT 仓库:https://apt.syncthing.net/
- Docker 镜像:
docker.io/syncthing/syncthing:2.0.0
或ghcr.io/syncthing/syncthing:2.0.0
({docker,ghcr}.io/syncthing/syncthing:2
仅跟随主版本号)
这款软件真是太棒了,我已经用了大约5到6年,在4台电脑和一部安卓手机上使用过。从未遇到过任何问题,它尊重你的隐私,只做它宣传的功能,而且不会打扰你。
安卓平台的最新情况如何?据我所知,由于谷歌实施的新限制,他们已经停止了对安卓系统的官方支持。
在他们停止官方安卓应用时,已经有一个更受欢迎且维护更好的分支:https://github.com/Catfriend1/syncthing-android
据我所知,它仅在F-Droid/Github/Obtainium上可用
是的,无法获得访问目录结构的权限,这在该平台上似乎会成为重大障碍?
Syncthing分支已在Google Play商店上架,对我来说运行正常。
截至今日,macOS 平台尚未推出(非 RC 版本)的 2.0 集成版本:https://github.com/syncthing/syncthing-macos/releases
> 以下平台目前无法在 syncthing.net 和 GitHub 上下载预编译二进制文件,原因是与 SQLite 的交叉编译相关复杂性:
dragonfly/amd64 illumos/amd64 和 solaris/amd64 linux/ppc64 netbsd/* openbsd/386 和 openbsd/arm windows/arm
我对他们放弃 windows/arm 感到惊讶,因为这似乎是当前的发展方向。
我不明白他们为什么选择使用 github.com/mattn/go-sqlite3 而不是 modernc.org/sqlite
> 我对他们放弃 windows/arm 感到惊讶,因为这似乎是当前的发展方向。
请注意,Windows/ARM64 仍然受支持。不确定 32 位 ARM 在 Windows 上是否曾经相关。
32 位 ARM 支持正在被淘汰:
> 未来版本的 Windows 11 将移除对 32 位 ARM 版本应用程序的支持。
https://learn.microsoft.com/en-us/windows/whats-new/deprecat…
部分设备,如在苹果ARM处理器上运行的Windows 11虚拟机,已无法运行32位ARM应用程序。
https://support.microsoft.com/en-us/windows/options-for-usin…
我不确定这是否是原因,但modernc.org/sqlite的性能比github.com/mattn/go-sqlite3差。
Syncthing的Windows图形界面SyncTrayzor仍在积极开发中。https://github.com/GermanCoding/SyncTrayzor自2021年SyncTtrayzor停止开发后,它一直与更新的SyncThing作为后端配合使用。随着 Syncthing v2 的发布,旧版本不再兼容,但新版本接过了接力棒。
我非常喜欢这个软件。多年来,我一直用它在不同电脑和不同人之间同步文件。
> 首次启动时不再创建“默认文件夹”。
终于有点理智了!
(还有那个数据库删除间隔设置)。
是否需要一次性升级所有 Syncthing 实例,还是 1.x 版本在一段时间内仍能与 2.x 版本兼容?这次更新似乎相当重大,我不确定升级时需要考虑哪些问题。
“Syncthing 1.x 版本即将被 Syncthing 2.x 版本取代。2.x 版本引入了新的数据库格式和多项优化,但仍与 Syncthing 1 保持协议兼容。”
https://github.com/syncthing/syncthing/releases/tag/v1.30.0
啊,谢谢,我在 v2 发布说明中找不到这个内容
很想了解更多关于这一点:
滚动哈希检测已不再支持,因为这实际上从未起到作用。相反,在没有它的情况下,扫描和同步会更快、更高效。
这是相关的问题,我认为。
https://github.com/syncthing/syncthing/pull/10005
代码库与文件系统绑定有多紧密?我希望将同步功能作为库使用,应用于自己的数据而非文件。
我使用 rsync 实现此功能,Syncthing 有什么优势?或许提供一个友好的图形界面?
不同使用场景。Syncthing只需在两台机器之间保持文件夹同步,即使它们不在同一网络上。这是一个很棒的工具,可以将手机拍摄的照片备份到家中运行的树莓派上。
它还会同步修改内容,因此严格来说并非备份解决方案。
如果启用文件版本控制[1],它可以实现备份功能。当然,如果远程文件系统配置了定期快照,也可以实现备份。
[1] https://docs.syncthing.net/users/versioning.html
你可以将Syncthing视为一个点对点Dropbox。它还可以作为一个“实时备份”程序,类似于Time Machine,如果你在其中一个对等节点上启用了文件版本控制。
Rsync很棒,因为有一个明确的主副本。但如果数据的任何副本都可能发生更改,它可能会变得繁琐。
它能让我自动在多台机器间同步一个文件夹。无需繁琐的账户设置,其图形界面足够简单,让我能向完全不懂技术的人讲解如何设置,且即使部分终端节点位于NAT后方也不影响使用。
一旦运行,只需在文件夹中复制或编辑文件,它们就会同步到其他所有位置。无需手动干预,无需记住哪台电脑有最新副本,即使我向它投喂数千兆字节的媒体文件,它也不会出错,即使我在多个文件夹中执行
git init
,突然间我的编码项目就能在任何笔记本电脑上随时使用。它还提供了一些额外功能,例如允许某些机器仅存储数据副本而无需加密密钥,这样我就可以使用廉价的VPS而无需担心其存储明文数据副本。此外,它还支持存储修改文件的多版本,如有需要。最终,这些都是文件系统中的普通文件,这可以避免许多麻烦。
它在寻找通往另一台设备的最佳路径方面也做得相当不错。它共享 IP 地址(你运行服务所在的 IP),因此无论是在同一局域网、不同 VLAN、通过 VPN,还是通过双 NAT 的他人 Wi-Fi,它都能正常工作,并且通常会做出正确的选择(如果你需要或希望,也可以进行配置)。
与 rsync 的比较。SyncThing 是一个无需提供商、账户、费用或数据归属他人的自建 Dropbox/OneDrive 等替代方案,且对非技术人员而言,其使用门槛极低。
不错,谢谢。我很少使用 Dropbox,可能只是为了公开分享一个文件一周,或者长期保存一份简历。
所以,我觉得不需要这个,但会把它记在心里,以防万一需要穿透NAT之类的情况。
> 无需依赖服务提供商、账户、费用或让你的数据归他人所有
听起来如果需要在云端部署服务器作为前提条件,这可能并不完全准确,不过也许我理解错了。
Syncthing是点对点而非客户端-服务器架构,因此无需云端或任何位置的服务器。
它持续运行,而rsync需要定期执行(如果存在持续运行设置请告知)。
此外SyncThing是双向同步,而rsync是单向(当然也可以双向推送)。