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 --helpsyncthing 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.0ghcr.io/syncthing/syncthing:2.0.0
    {docker,ghcr}.io/syncthing/syncthing:2 仅跟随主版本号)

共有 27 条讨论

  1. 这款软件真是太棒了,我已经用了大约5到6年,在4台电脑和一部安卓手机上使用过。从未遇到过任何问题,它尊重你的隐私,只做它宣传的功能,而且不会打扰你。

    1. 安卓平台的最新情况如何?据我所知,由于谷歌实施的新限制,他们已经停止了对安卓系统的官方支持。

      1. 是的,无法获得访问目录结构的权限,这在该平台上似乎会成为重大障碍?

      2. Syncthing分支已在Google Play商店上架,对我来说运行正常。

  2. > 以下平台目前无法在 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

    1. > 我对他们放弃 windows/arm 感到惊讶,因为这似乎是当前的发展方向。

      请注意,Windows/ARM64 仍然受支持。不确定 32 位 ARM 在 Windows 上是否曾经相关。

    2. 我不确定这是否是原因,但modernc.org/sqlite的性能比github.com/mattn/go-sqlite3差。

  3. Syncthing的Windows图形界面SyncTrayzor仍在积极开发中。https://github.com/GermanCoding/SyncTrayzor自2021年SyncTtrayzor停止开发后,它一直与更新的SyncThing作为后端配合使用。随着 Syncthing v2 的发布,旧版本不再兼容,但新版本接过了接力棒。

    我非常喜欢这个软件。多年来,我一直用它在不同电脑和不同人之间同步文件。

  4. > 首次启动时不再创建“默认文件夹”。

    终于有点理智了!

    (还有那个数据库删除间隔设置)。

  5. 是否需要一次性升级所有 Syncthing 实例,还是 1.x 版本在一段时间内仍能与 2.x 版本兼容?这次更新似乎相当重大,我不确定升级时需要考虑哪些问题。

      1. 啊,谢谢,我在 v2 发布说明中找不到这个内容

  6. 很想了解更多关于这一点:

    滚动哈希检测已不再支持,因为这实际上从未起到作用。相反,在没有它的情况下,扫描和同步会更快、更高效。

  7. 代码库与文件系统绑定有多紧密?我希望将同步功能作为库使用,应用于自己的数据而非文件。

  8. 我使用 rsync 实现此功能,Syncthing 有什么优势?或许提供一个友好的图形界面?

    1. 不同使用场景。Syncthing只需在两台机器之间保持文件夹同步,即使它们不在同一网络上。这是一个很棒的工具,可以将手机拍摄的照片备份到家中运行的树莓派上。

      1. 它还会同步修改内容,因此严格来说并非备份解决方案。

    2. 你可以将Syncthing视为一个点对点Dropbox。它还可以作为一个“实时备份”程序,类似于Time Machine,如果你在其中一个对等节点上启用了文件版本控制。

      Rsync很棒,因为有一个明确的主副本。但如果数据的任何副本都可能发生更改,它可能会变得繁琐。

    3. 它能让我自动在多台机器间同步一个文件夹。无需繁琐的账户设置,其图形界面足够简单,让我能向完全不懂技术的人讲解如何设置,且即使部分终端节点位于NAT后方也不影响使用。

      一旦运行,只需在文件夹中复制或编辑文件,它们就会同步到其他所有位置。无需手动干预,无需记住哪台电脑有最新副本,即使我向它投喂数千兆字节的媒体文件,它也不会出错,即使我在多个文件夹中执行git init,突然间我的编码项目就能在任何笔记本电脑上随时使用。

      它还提供了一些额外功能,例如允许某些机器仅存储数据副本而无需加密密钥,这样我就可以使用廉价的VPS而无需担心其存储明文数据副本。此外,它还支持存储修改文件的多版本,如有需要。最终,这些都是文件系统中的普通文件,这可以避免许多麻烦。

      它在寻找通往另一台设备的最佳路径方面也做得相当不错。它共享 IP 地址(你运行服务所在的 IP),因此无论是在同一局域网、不同 VLAN、通过 VPN,还是通过双 NAT 的他人 Wi-Fi,它都能正常工作,并且通常会做出正确的选择(如果你需要或希望,也可以进行配置)。

      与 rsync 的比较。SyncThing 是一个无需提供商、账户、费用或数据归属他人的自建 Dropbox/OneDrive 等替代方案,且对非技术人员而言,其使用门槛极低。

      1. 不错,谢谢。我很少使用 Dropbox,可能只是为了公开分享一个文件一周,或者长期保存一份简历。

        所以,我觉得不需要这个,但会把它记在心里,以防万一需要穿透NAT之类的情况。

        > 无需依赖服务提供商、账户、费用或让你的数据归他人所有

        听起来如果需要在云端部署服务器作为前提条件,这可能并不完全准确,不过也许我理解错了。

        1. Syncthing是点对点而非客户端-服务器架构,因此无需云端或任何位置的服务器。

    4. 它持续运行,而rsync需要定期执行(如果存在持续运行设置请告知)。

      此外SyncThing是双向同步,而rsync是单向(当然也可以双向推送)。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

你也许感兴趣的: