持续文件同步-Syncthing


Syncthing 是一个免费开源的工具,能在各个网络计算机间同步文件 / 文件夹。它的同步数据是从一个系统中直接传输到另一个系统的,所有的信息通讯都使用 TLS 进行加密,没有任何文件或文件夹会被存储在第三方系统中,安全且私密。此外,用户有权决定这些数据该存于何处,是否要分享到第三方等等。采用Go语言编写开发并在MPLv2协议下授权使用。

Syncthing 有一个强大的响应式的网页管理界面 (WebGUI,下同),它能够帮助用户简便地添加、删除和管理那些通过网络进行同步的文件夹。通过使用 Syncthing可以在多个系统上一次同步多个文件夹。在安装和使用上,Syncthing 是一个可移植的、简单而强大的工具。即然文件或文件夹是从一部计算机中直接传输到另一计算机中的,那么就无需考虑向云服务供应商支付金钱来获取额外的云空间。你所需要的仅仅是非常稳定的 LAN/WAN 连接以及在系统中有足够的硬盘空间。
它支持所有的现代操作系统,包括 GNU/Linux、Window、Mac OS X, 当然还有 Android。
优点
防止数据丢失:保护用户数据至关重要。采取一切合理的预防措施,以避免损坏用户的文件。
防范攻击者:同样,保护用户数据至关重要。不管我们的其他目标是什么,都绝不能让用户的数据容易受到未授权方的窃听或修改。
易于使用:同步应该平易近人,易于理解且具有包容性。
自动:仅在绝对必要时才需要用户交互。
普遍可用:同步应该在每台普通计算机上运行。谨记最新技术并非总是可用于任何给定的个人。
对于个人:同步主要是为了使单个用户具有安全,可靠和易于使用的文件同步能力。
其他一切:关心的很多事情都没有列入清单。只要不与上述目标冲突,就可以优化这些值。

最新版本:2
v2.0 系列的首发版本已于2025年8月中旬正式推出,一些更新亮点如下:
1.数据库后端从 LevelDB 切换到 SQLite。首次启动时需要迁移,对于大型系统来说,迁移过程可能会比较耗时。新数据库更易于理解和维护,且希望其稳定性更高。
2.日志格式已更改为使用结构化日志条目(一条消息加上多个键值对)。此外,现在可以按包控制日志级别,并在 INFO 和 ERROR 之间新增了 WARNING 日志级别(此前该级别被称为 WARNING...)。INFO 级别的日志内容更加详细,会显示 Syncthing 执行的同步操作。新增命令行参数 --log-level 可设置所有包的默认日志级别,STTRACE 环境变量和 GUI 也已更新以支持按包设置日志级别。---verbose 和 --logflags 命令行选项已被移除,若指定将被忽略。
3.已删除的项目不再永久保存在数据库中,而是在六个月后被清楚。如果你的用例要求删除操作在六个月以上后生效,建议将 --db-delete-retention-interval 命令行选项或相应的环境变量设置为零,或选择更长的时间间隔。
4.现代化的命令行选项解析。旧的 single-dash long 选项不再支持,例如,-home 必须改为 --home。部分选项已重命名,其他选项则变为子命令。所有服务选项现在也可作为环境变量接受。详情可参阅 syncthing --help 和 syncthing serve --help。
5.不再支持对 shifted data 的滚动 hash 检测,因为这实际上毫无帮助。相反,没有它,扫描和同步会更快、更高效。
6.首次启动时不再创建 “default folder”。
7.v2 设备之间现在默认使用多个连接。新的默认值是使用三个连接:一个用于索引元数据,两个用于数据交换。
8.遗憾的是,由于与 SQLite 交叉编译相关的复杂性,以下平台目前无法在 syncthing.net 和 GitHub 上下载预构建的二进制文件:
dragonfly/amd64
illumos/amd64 and solaris/amd64
linux/ppc64
netbsd/*
openbsd/386 and openbsd/arm
windows/arm
9.涉及已删除文件的 conflict 解决处理方式已更改。现在,删除操作可以作为 conflict 解决的最终结果,从而导致已删除文件被移动到 conflict copy。
本次更新还提供以下版本:
APT repository: https://apt.syncthing.net/
Docker image: docker.io/syncthing/syncthing:2.0.0
更多详情可查看此处。
项目主页:https://github.com/syncthing/syncthing/

Syncthing 有一个强大的响应式的网页管理界面 (WebGUI,下同),它能够帮助用户简便地添加、删除和管理那些通过网络进行同步的文件夹。通过使用 Syncthing可以在多个系统上一次同步多个文件夹。在安装和使用上,Syncthing 是一个可移植的、简单而强大的工具。即然文件或文件夹是从一部计算机中直接传输到另一计算机中的,那么就无需考虑向云服务供应商支付金钱来获取额外的云空间。你所需要的仅仅是非常稳定的 LAN/WAN 连接以及在系统中有足够的硬盘空间。
它支持所有的现代操作系统,包括 GNU/Linux、Window、Mac OS X, 当然还有 Android。
优点
防止数据丢失:保护用户数据至关重要。采取一切合理的预防措施,以避免损坏用户的文件。
防范攻击者:同样,保护用户数据至关重要。不管我们的其他目标是什么,都绝不能让用户的数据容易受到未授权方的窃听或修改。
易于使用:同步应该平易近人,易于理解且具有包容性。
自动:仅在绝对必要时才需要用户交互。
普遍可用:同步应该在每台普通计算机上运行。谨记最新技术并非总是可用于任何给定的个人。
对于个人:同步主要是为了使单个用户具有安全,可靠和易于使用的文件同步能力。
其他一切:关心的很多事情都没有列入清单。只要不与上述目标冲突,就可以优化这些值。

最新版本:2
v2.0 系列的首发版本已于2025年8月中旬正式推出,一些更新亮点如下:
1.数据库后端从 LevelDB 切换到 SQLite。首次启动时需要迁移,对于大型系统来说,迁移过程可能会比较耗时。新数据库更易于理解和维护,且希望其稳定性更高。
2.日志格式已更改为使用结构化日志条目(一条消息加上多个键值对)。此外,现在可以按包控制日志级别,并在 INFO 和 ERROR 之间新增了 WARNING 日志级别(此前该级别被称为 WARNING...)。INFO 级别的日志内容更加详细,会显示 Syncthing 执行的同步操作。新增命令行参数 --log-level 可设置所有包的默认日志级别,STTRACE 环境变量和 GUI 也已更新以支持按包设置日志级别。---verbose 和 --logflags 命令行选项已被移除,若指定将被忽略。
3.已删除的项目不再永久保存在数据库中,而是在六个月后被清楚。如果你的用例要求删除操作在六个月以上后生效,建议将 --db-delete-retention-interval 命令行选项或相应的环境变量设置为零,或选择更长的时间间隔。
4.现代化的命令行选项解析。旧的 single-dash long 选项不再支持,例如,-home 必须改为 --home。部分选项已重命名,其他选项则变为子命令。所有服务选项现在也可作为环境变量接受。详情可参阅 syncthing --help 和 syncthing serve --help。
5.不再支持对 shifted data 的滚动 hash 检测,因为这实际上毫无帮助。相反,没有它,扫描和同步会更快、更高效。
6.首次启动时不再创建 “default folder”。
7.v2 设备之间现在默认使用多个连接。新的默认值是使用三个连接:一个用于索引元数据,两个用于数据交换。
8.遗憾的是,由于与 SQLite 交叉编译相关的复杂性,以下平台目前无法在 syncthing.net 和 GitHub 上下载预构建的二进制文件:
dragonfly/amd64
illumos/amd64 and solaris/amd64
linux/ppc64
netbsd/*
openbsd/386 and openbsd/arm
windows/arm
9.涉及已删除文件的 conflict 解决处理方式已更改。现在,删除操作可以作为 conflict 解决的最终结果,从而导致已删除文件被移动到 conflict copy。
本次更新还提供以下版本:
APT repository: https://apt.syncthing.net/
Docker image: docker.io/syncthing/syncthing:2.0.0
更多详情可查看此处。
项目主页:https://github.com/syncthing/syncthing/