自托管Dropbox替代方案对比:Nextcloud、Seafile与Syncthing
对比Nextcloud、Seafile、Syncthing和对象存储:了解同步拓扑、小型VPS的实际成本,以及为什么同步不能替代备份。
应运行哪种自托管 Dropbox 替代方案?
有4种自托管 Dropbox 替代方案值得考虑:Nextcloud、Seafile、Syncthing,以及在对象存储之上使用客户端。它们不能互相替代。Nextcloud 适合家庭或小型团队,尤其适合需要向他人发送文件的场景。Seafile 适合需要同步大量小文件的个人或团队,此时同步速度比数据在磁盘上的存储形式更重要。Syncthing 适合个人在自己的设备之间同步数据,且不需要向外部人员提供链接。对象存储适合归档:存储成本低,但很少访问。
比较功能之前,应先根据同步方式进行选择。功能列表看起来都很相似。拓扑结构,也就是每台其他设备都要与之保持一致的副本所在的机器,才决定您在6个月后是否仍然满意。
同步拓扑:权威服务器,或无服务器的对等节点
目前有两种设计可选,后续大部分内容取决于您的选择。
权威服务器。 Nextcloud、Seafile 和对象存储都采用这种方式。一台通常是 VPS(虚拟专用服务器)的计算机保存权威副本。每台设备都与这台计算机通信。您的笔记本电脑可以离线一个月,重新上线后会自动追上最新状态。可用空间只有 6 GB 的手机可以只保存部分数据,而服务器保存全部数据。浏览器可以访问这些文件,这也是共享链接能够存在的原因。
无服务器的对等节点。 Syncthing 采用这种方式。设备彼此发现,并通过加密连接直接交换文件列表。没有哪个副本具有权威性:文件只存在于保存它的设备上,其他位置都没有。两台设备必须同时在线,变更才能在它们之间传递。由于没有计算机提供网页服务,因此没有可供他人访问的 URL。
由此会产生4个影响,用户通常会在后期才遇到这些问题。
- 要将文件发送给不愿安装软件的人,需要权威服务器。链接就是 URL,而 URL 需要有进程监听端口。
- 要从不受您控制的计算机(例如工作笔记本电脑)访问文件,需要权威服务器。
- 设备离线数周后,可以在重新上线时从服务器追上最新状态。在对等节点架构中,只有同时有另一台保存这些数据的设备在线时,它才能追上最新状态。因此,许多 Syncthing 用户会在 VPS 上运行一个实例,将其作为始终在线的对等节点。
- 存储空间的计算方式不同。权威服务器保存一个完整副本,此外每台设备还会保存其本地保留的数据。4个共享同一文件夹的对等节点会保存4个完整副本,因为每个对等节点都保留整个文件夹。
Nextcloud:用户、组和公共链接
Nextcloud 是一个 PHP Web 应用。它将文件作为普通文件存储在数据目录下,并在数据库中记录这些文件。您可以将文件夹共享给用户、组,或通过公共链接共享,并为链接设置密码和过期日期。版本历史默认启用,删除的文件会先进入回收站。桌面客户端支持 Linux、macOS 和 Windows,iOS 和 Android 也有官方应用。如果您因为其他人需要接收文件而离开 Dropbox,Nextcloud 是一个可行的选择。
代价是组件较多。常规安装需要 Web 服务器、PHP-FPM(PHP 进程管理器)、MariaDB 或 PostgreSQL 等数据库,以及用于文件锁定的 Redis。后台任务每五分钟通过 cron 或 systemd timer 运行一次。在 1 GB VPS 上它可以启动,但大型上传或较长的 occ维护命令会触发 out-of-memory killer。对于少量用户,请将 2 GB 视为最低配置;启用更多应用后,您可能需要 4 GB。升级也是另一项代价:应用商店中的应用是针对特定核心版本构建的,因此升级到下一个主要版本前,请确认您依赖的应用支持该版本。
当一个账户包含数十万个小文件时,Nextcloud 的速度会下降。这是因为每个文件既是文件缓存表中的一行,也是磁盘上的实际文件,桌面客户端还会逐个处理这些文件。在家庭使用规模下,通常不会遇到这个问题。基于 Docker 安装并配置 TLS 和备份的 Nextcloud介绍了配置容量、TLS(传输层安全)和备份的方法;决定使用 Nextcloud 后,请参考该文档。
需要注意使用范围。Nextcloud 还可以管理日历、联系人、笔记和照片库。每启用一个应用,都会增加后台任务,并增加一个可能阻止升级的组件。如果实际需求是管理照片,专用工具的处理效果更好:请参阅作为自托管 Google Photos 替代方案的 Immich。如果实际需求是管理文档和 wiki,请考虑自托管的 Notion 替代方案,不要在文件服务器上不断叠加应用。在浏览器中编辑这些文档,还需要额外部署 office 服务器。Collabora 的内置 CODE 服务器以 Nextcloud 应用的形式安装,适合个人或小型团队使用。Nextcloud 自己的手册称其速度略低于独立服务器,并建议为获得更好性能而部署专用服务器。因此,在认定 2 GB 的最低配置仍然足够前,请比较OnlyOffice 和 Collabora。
Seafile:专为大量小文件设计
Seafile 会将每个文件拆分为多个块,并将这些块存储在内部对象存储中,通过内容哈希寻址。这与 git 存储对象的方式相同。同步和共享的单位是库,而不是文件夹树。由于客户端上传的是文件块和一次提交,而不是为每个文件分别发送一个请求,因此同步包含 100,000 个小文件的目录时,速度远快于逐文件处理的协议。相同的块只存储一次,因此大型文件的第二个副本几乎不占用额外空间。
代价是,服务器上的文件不再以普通文件形式存在。打开存储目录后,看到的是名称由十六进制字符组成的对象文件。要导出数据,必须使用 Seafile 客户端,或 Seafile 自带的导出和 fsck 工具。备份仍然有效,因为这些对象本身就是普通文件;但你无法使用 cp 恢复单个电子表格。现在就决定这是否可以接受,因为这是用户日后最容易后悔的特性。
Seafile 提供社区版和付费专业版,两个版本的功能划分会随版本发布而变化。因此,在围绕某项具体功能规划团队部署前,请先阅读其网站上的当前条款。Seafile 提供官方桌面客户端和移动客户端。加密库在客户端加密,因此服务器保存的是无法读取的密文。如果丢失密码短语,整个库都无法读取,包括你自己也无法读取。在浏览器中打开加密库意味着要将该密码短语提供给 Web 会话,因此,这项保证的完整强度只适用于桌面客户端和移动客户端。
资源消耗与 Nextcloud 接近。你需要运行数据库、内存缓存和两个应用进程,因此 2 GB 仍然是合理的最低配置。
Syncthing:无需登录
Syncthing 是一个 Go 单文件二进制程序。它监控文件夹,通过发现服务器或中继查找对等设备,并在设备之间直接同步。与您同步的用户不需要账户,也没有登录页面。您只需通过设备 ID 配对两台设备,然后在两端分别接受该文件夹。这里介绍的所有方案中,它的运行维护工作最少,因为需要管理的组件很少。
需要放弃的是完整的共享功能。其对应项为 Device pairing only, no links。您无法向客户、会计或亲属提供链接。移动端是另一个缺口:Community apps only, no official mobile app。官方 Android 应用在 2024 年 12 月最后一次发布后停止维护,项目文档现在改为列出 Syncthing-Fork 等社区 Android 应用。在 iOS 上,项目自己的 FAQ 说明得很直接:“当前 Syncthing 团队近期没有正式支持 iOS 的计划”,因为 iOS 对后台处理的限制很严格,难以实现可靠同步。iOS 用户只能使用第三方应用。
资源占用较小,但有一点需要注意。Syncthing 会为同步的每个文件保留一个索引条目,因此内存占用和首次扫描时间取决于文件数量,而不是总容量。首次对大型文件夹进行哈希计算时,CPU 会持续一段时间处于高负载,之后会恢复稳定。在最小规格的 VPS 方案上,它也能轻松运行。
冲突通过同时保留两份文件来处理。当两台设备无法互相连接时同时修改同一个文件,Syncthing 会重命名其中一份,并将其保留在另一份旁边,因此您会看到类似 notes.sync-conflict-20260802-141530-K7MB3QT.md 的文件。不会丢失数据。但文件也不会自动合并,您需要手动处理冲突。
使用客户端的对象存储:廉价字节,而非同步文件夹
对象存储是指兼容 S3 (Simple Storage Service) 的存储桶,既可以自行托管 MinIO,也可以从服务商处租用。在自行托管前请注意:MinIO 的社区仓库自 2026 年 4 月 25 日起已归档并设为只读,标记为不再维护,且不再提供预编译的社区二进制文件。因此,进行新安装意味着必须从源码构建,且无法保证未来会获得补丁。你可以通过工具访问存储桶:使用命令行的 rclone,或者将存储桶挂载为驱动器的桌面客户端。如果你更倾向于通过网页而非 Shell 浏览存储桶,此自托管文件管理器对比中的多种工具均支持将 S3 存储桶作为后端,并在此基础上添加自定义分享链接。分享功能通过预签名 URL 实现,即你生成的带有过期时间的链接。版本控制是存储桶的一项设置:Bucket versioning, off by default。之后启用该功能,存储桶中已有的对象仍会被纳入版本控制。这些对象会携带 null 版本 ID,后续的覆盖或删除操作会将旧版本保留,而非直接丢弃。版本控制无法恢复在功能开启前被覆盖或删除的数据,因此请在创建存储桶时即开启此功能。
将存储桶视为同步文件夹是常见的误区。默认情况下,没有任何程序会监控你的 Documents 目录。rclone bisync 执行的是双向同步,而 rclone 的官方文档明确指出了使用时需要注意的事项。对象存储的优势在于作为底层存储:例如作为备份目标,或作为应用程序的存储层。使用 MinIO 自托管兼容 S3 的对象存储涵盖了服务器端的配置。
这里的资源成本计算方式较为特殊。MinIO 仅为一个二进制文件,空闲时资源占用极低。你实际支付的成本是磁盘费用,在 VPS 上表现为按 GB 租用的块存储,以及存取对象时产生的带宽费用。这些费用都不会体现在 free -h 中,因此在规划归档容量前,请阅读 VPS 的每月实际成本。
共享、移动客户端和版本控制对比
此图表背后的数据
[
{
"tool": "Nextcloud",
"sharing": "Public links, users and groups",
"mobile": "Official iOS and Android apps",
"versioning": "On by default, plus trash"
},
{
"tool": "Seafile",
"sharing": "Public links with password and expiry",
"mobile": "Official iOS and Android apps",
"versioning": "Library history and snapshots"
},
{
"tool": "Syncthing",
"sharing": "Device pairing only, no links",
"mobile": "Community apps only, no official mobile app",
"versioning": "Optional per folder, off by default"
},
{
"tool": "Object storage",
"sharing": "Presigned URLs you generate",
"mobile": "Third party clients only",
"versioning": "Bucket versioning, off by default"
}
]全部 4 个选项都沿着同一条标准划分。其中 3 个选项可以让只持有浏览器的陌生人获取文件。另一个选项只能与您已经拥有的设备通信。需要特别说明 Seafile 的版本控制选项 Library history and snapshots:历史记录按库保存,因此删除库时,其历史记录也会随库一起进入 Seafile 的系统回收站。管理员可以从回收站恢复库,但清空回收站后,历史记录也会一并丢失。
再次取回数据
现在检查退出成本很容易,之后才发现成本很高。因此,在做出承诺前先进行检查。
Nextcloud 将实际文件存储在实际目录中,因此对数据目录执行 tar,即可取回文档,即使应用之后再也无法启动。Syncthing 会在每个对等节点上执行相同操作,因此在这里提供了最可靠的退出方式:文件始终直接存放在每台设备上。Seafile 的对象存储需要使用 Seafile 或其导出工具,才能将数据块重新组装成文件。对象存储需要使用 rclone 或等效工具,只需执行一条命令即可。
同步不是备份,数据丢失往往就发生在这一区别上
这里的每个工具都会在计算机之间复制变更。删除操作也是一种变更。在笔记本电脑上删除文件夹后,客户端会通知服务器,服务器应用此操作,其他设备也会将其删除。勒索软件采用相同的路径:它在本地加密文件,客户端发现文件已修改,然后上传加密后的版本。同步运行完全正常,但数据仍然丢失。
回收站和版本历史可以降低影响。但它们也会过期,可能被执行错误操作的同一账户清空,而且与当前副本位于同一磁盘上。卷故障会同时带走文件及其历史版本。
备份是位于独立硬件上的独立副本,按计划创建,并且你至少成功恢复过一次。应在同一次任务中备份数据库和文件。如果只恢复 Nextcloud 数据目录而不恢复数据库,实例将不知道这些文件存在;随后执行 occ files:scan 会恢复文件,但会丢失存储在这些表中的共享信息和版本元数据。旧版本本身是 data/[user]/files_versions 下的文件,因此恢复数据目录时也会恢复其内容。从 VPS 定期执行 restic 备份介绍了这种加密、去重备份方案,包括如何测试恢复,而不是默认恢复一定可用。
我的选择
对大多数读者而言,我会选择 Nextcloud。离开 Dropbox 后,人们容易忽略两件事:将链接发送给永远不会安装任何软件的人,以及在手机上打开文件。Nextcloud 通过官方客户端同时支持这两点,而 2 GB RAM 是值得为此付出的合理成本。运行自行安装的免费服务器即可。Nextcloud 的 Enterprise 订阅从 100 个用户起售,同时销售功能和支持服务:截至 2026 年 10 月 17 日,其定价页面列出的 Nextcloud Assistant 和 Nextcloud Flow 仅包含在最高级的 Ultimate 计划中,Whiteboard 和大多数第三方集成也按套餐级别设置了限制。这里有两个例外。如果文件夹只属于您自己,并且始终只存放在您拥有的硬件上,就运行 Syncthing;这样无需修补服务器,也无需保护 Web 登录入口。如果您要同步包含数十万个文件的工作目录,就运行 Seafile,并接受不透明存储以换取速度。无论选择哪一个,对象存储都应位于其下方,作为备份目标,而不是位于其前方充当同步工具。
FAQ
Syncthing 是我笔记本电脑的备份吗?
不是。Syncthing 会在设备之间同步更改,删除操作和其他更改一样,因此误删的文件会在几秒内从所有配对设备中消失。按文件夹启用文件版本控制可以降低风险,但默认关闭,必须在每个文件夹中单独启用。请在独立硬件上按计划执行真正的备份,并至少恢复一次,以确认恢复流程正常。
我可以在同一台 VPS 上运行 Nextcloud 和 Syncthing 吗?
可以。两者监听不同端口,不会发生冲突。不要将 Syncthing 文件夹指向 Nextcloud 的数据目录。Nextcloud 会在数据库中跟踪每个文件,因此直接出现在其目录下的文件在运行 occ files:scan 之前不会显示,而直接从该目录删除的文件会在数据库中留下指向不存在对象的记录。请为 Syncthing 使用独立目录,或将该目录作为外部存储挂载到 Nextcloud,使 Nextcloud 知道需要检查该目录。
哪个应用可以让我与没有账号的人共享链接?
Nextcloud 和 Seafile 都可以创建公开链接,并支持设置可选密码和过期日期。对象存储可以生成预签名 URL,在设定时间到达后自动失效。Syncthing 无法提供这种功能。它采用设备配对的共享模式,因此对方必须安装 Syncthing,向您提供设备 ID,并接受该文件夹。
服务器需要多大的磁盘空间?
对于作为权威数据源的服务器,应按共享数据的完整大小规划空间,并额外预留文件版本历史、回收站和正在上传文件所需的工作空间。文件版本历史最容易被低估:如果保留一个每天变化的 2 GB 文件的所有版本,空间会快速增长,因此应尽早设置保留策略。将数据放在独立卷上,可以避免这些数据占满根文件系统;根文件系统一旦写满,整个服务器都会停止工作,而不只是某次上传失败。