SSD Nodes Learn 🎉 VPS $4.99/月起
指南 Matt Connor作者: Matt Connor · 更新于 2026-08-07

自托管 Dropbox 替代方案怎么选?Nextcloud 对比

对比 Nextcloud、Seafile、Syncthing 和对象存储的同步拓扑、VPS 实际成本与适用场景,并解释为什么同步不是备份。

应运行哪种自托管 Dropbox 替代方案?

有 4 种自托管 Dropbox 替代方案值得考虑:Nextcloud、Seafile、Syncthing,以及搭配客户端使用的对象存储。它们不能相互替代。Nextcloud 适合家庭或小型团队,尤其是需要让其他人接收文件的场景。Seafile 适合需要同步大量小文件的个人或团队,尤其是在同步速度比磁盘上的数据组织方式更重要时。Syncthing 适合个人在自己的设备之间同步文件,且不需要向外部人员提供链接。对象存储适合用作归档:存储成本低,但很少访问其中的数据。

在比较功能之前,先根据同步方式进行选择。功能列表看起来都很相似。拓扑结构,也就是每台其他设备都与之保持一致的副本所在的机器,才决定您 6 个月后是否仍然满意。

同步拓扑:权威服务器,或无服务器的对等节点

有两种设计可供选择,后文的大多数内容都取决于您选择哪一种。

权威服务器。 Nextcloud、Seafile 和对象存储都采用这种方式。一台通常为 VPS(虚拟专用服务器)的机器保存权威副本。每台设备都与这台机器通信。您的笔记本电脑可以关闭一个月,重新上线后会自行追赶同步。一部只有 6 GB 可用空间的手机可以只保存部分数据,而服务器保存全部数据。浏览器可以访问这些文件,因此才能创建共享链接。

无服务器的对等节点。 Syncthing 采用这种方式。设备相互发现,并通过加密连接直接交换文件列表。不存在权威副本:文件只存在于保存该文件的设备上,其他地方都没有。两个设备必须同时在线,变更才能在它们之间传递。没有可提供给他人的 URL,因为没有机器在提供网页。

这会带来以下四个后果,也是用户往往到后期才遇到的问题。

  • 将文件发送给不愿安装软件的人,需要权威服务器。链接就是 URL,而 URL 需要有进程监听端口。
  • 从您无法控制的机器(例如工作笔记本电脑)访问文件,需要权威服务器。
  • 关闭数周的设备重新上线后,可以从服务器追赶同步。在对等节点架构中,只有当另一台保存这些数据的设备也在线时,它才能追赶同步。因此,许多 Syncthing 用户会在 VPS 上运行一个实例,将其作为始终在线的对等节点。
  • 存储空间的占用方式不同。权威服务器保存一个完整副本,此外每台设备还会保存其本地保留的数据。共享同一文件夹的 4 个对等节点会保存 4 个完整副本,因为每个对等节点都保留整个文件夹。

Nextcloud:用户、组和公共链接

Nextcloud 是一个 PHP Web 应用。它会将文件以普通文件的形式存储在数据目录下,并在数据库中记录这些文件。您可以与用户或组共享文件夹,也可以创建带密码和过期日期的公共链接。版本历史默认启用,删除的文件会先进入回收站。桌面客户端支持 Linux、macOS 和 Windows,iOS 和 Android 应用也是官方提供的。如果您离开 Dropbox 的原因是其他人需要接收您的文件,那么这就是实际可行的答案。

代价是组件较多。标准安装需要运行 Web 服务器、PHP-FPM(PHP 进程管理器)、MariaDB 或 PostgreSQL 等数据库,以及用于文件锁定的 Redis。后台任务通过 cron 或 systemd timer 每五分钟运行一次。在 1 GB VPS 上它可以启动,但遇到大文件上传或耗时较长的 occ 维护命令后,就可能触发内存不足终止程序。对于少量用户,请将 2 GB 视为最低配置;启用更多应用后,通常需要 4 GB。另一个代价是升级:应用商店中的应用是针对特定核心版本构建的,因此升级到下一个主版本前,请确认您依赖的应用支持该版本。

当一个账户包含数十万个小文件时,Nextcloud 的速度会下降。这是因为每个文件都对应文件缓存表中的一行,也对应磁盘上的一个实际文件,而桌面客户端会逐个处理这些文件。在家庭使用规模下通常不会遇到这个问题。基于 Docker 的 Nextcloud TLS 和备份安装介绍了容量规划、TLS(传输层安全)和备份;确定使用 Nextcloud 后,请参阅该文。

还需要注意使用范围。Nextcloud 还可以运行日历、联系人、笔记和照片库。每启用一个应用,都会增加后台任务,并增加一个可能阻碍升级的组件。如果实际需求是管理照片,专用工具的处理效果更好:请参阅将 Immich 用作自托管的 Google Photos 替代品。如果实际需求是管理文档和 Wiki,请查看自托管的 Notion 替代方案,不要继续在文件服务器上叠加应用。

Seafile:专为大量小文件设计

Seafile 会将每个文件拆分为多个块,并按内容哈希将这些块存储在内部对象存储中,原理与 git 存储对象相同。同步和共享的单位是库,而不是文件夹树。客户端上传的是多个块和一次提交,而不是每个文件发送一个请求。因此,同步包含 100,000 个小文件的目录时,速度会远高于逐文件协议。相同的块只存储一次,因此大型文件的第二个副本几乎不增加存储成本。

代价是,服务器上的文件不再是普通文件。打开存储目录后,您看到的是名称由十六进制字符组成的对象文件。导出数据需要使用 Seafile 客户端,或 Seafile 自带的导出和 fsck 工具。备份仍然有效,因为这些对象本质上是普通文件;但您无法使用 cp 恢复单个电子表格。现在就决定是否能接受这一点,因为这是许多人后来会后悔的特性。

Seafile 提供社区版和付费专业版,两个版本之间的功能划分会随版本发布而变化。因此,在围绕某项具体功能规划团队部署前,请先阅读其网站上的当前条款。Seafile 提供官方桌面客户端和移动客户端。加密库在客户端完成加密,因此服务器保存的是无法读取的密文。如果丢失密码短语,该库将无法读取,包括您自己也无法读取。在浏览器中打开加密库,意味着需要将该密码短语交给 Web 会话。因此,这项保证的最强形式适用于桌面客户端和移动客户端。

资源消耗接近 Nextcloud。您需要运行数据库、内存缓存和两个应用进程,因此 2 GB 仍然是合理的最低配置。

Syncthing:无需登录

Syncthing 是一个 Go 单二进制程序。它监控文件夹,通过发现服务器或中继查找对等设备,并在设备之间直接同步。与您同步的用户不需要账户,也没有登录页面。您只需通过设备 ID 配对两个设备,然后在两端分别接受该文件夹。它是本文介绍的所有方案中运行维护工作最少的,因为实际需要运行的组件很少。

代价是完全没有共享功能。其对应项为 Device pairing only, no links。您无法向客户、会计人员或亲属发送链接。移动端支持也是一个缺口:Android app, no official iOS。项目自己的 FAQ 对此说明得很直接:“当前 Syncthing 团队近期没有正式支持 iOS 的计划”,因为 iOS 对后台处理的限制过多,难以实现可靠同步。iOS 用户只能使用第三方应用。

资源占用较小,但有一点需要注意。Syncthing 会为同步的每个文件保留一个索引项,因此内存占用和首次扫描时间取决于文件数量,而不是总容量。首次对大型文件夹进行哈希计算时,CPU 会持续占用一段时间,之后会趋于稳定。在最小规格的 VPS 方案上,它也能稳定运行。

发生冲突时,Syncthing 会保留两边的文件。当两个设备无法互相通信期间修改了同一个文件,Syncthing 会重命名其中一个副本,并将其保留在另一个副本旁边,因此您会看到类似 notes.sync-conflict-20260802-141530-K7MB3QT.md 的文件。不会有数据丢失。但文件也不会自动合并,您需要手动处理冲突。

使用客户端操作对象存储:低成本存储,不是同步文件夹

对象存储是兼容 S3(简单存储服务)的存储桶。您可以使用 MinIO 自托管,也可以向服务商租用。您需要通过工具访问它:在命令行中使用 rclone,或使用将存储桶显示为驱动器的桌面客户端。共享方式是预签名 URL,也就是包含自身过期时间的链接。版本控制是存储桶设置:Bucket versioning, off by default。因此应在创建存储桶时启用它,因为它不适用于此前上传的对象。

将存储桶当作同步文件夹使用,就会出现问题。默认情况下,没有任何程序会监控您的 Documents 目录。rclone bisync执行双向同步,而 rclone 的官方文档也明确说明了使用时需要谨慎。对象存储最适合用作底层存储:作为备份目标,或作为应用程序背后的存储层。使用 MinIO 自托管兼容 S3 的对象存储介绍了服务器端配置。

这里的资源成本比较特殊。MinIO 只有一个二进制文件,空闲时资源占用很低。您实际支付的成本是磁盘费用;在 VPS 上,这意味着按 GB 租用的块存储卷,以及传入和传出对象所消耗的带宽。这两项都不会显示在 free -h 中,因此在规划归档容量前,请先阅读VPS 每月的实际成本

共享、移动客户端与版本控制对比

ChartSharing, mobile clients and versioning, by tool
The data behind this chart
[
  {
    "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": "Android app, no official iOS",
    "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 个选项都围绕同一条标准展开。其中三个选项可以将文件提供给只持有浏览器的陌生人。另一个选项只能与您已经拥有的设备通信。需要特别说明 Seafile 的版本控制项 Library history and snapshots:历史记录按库保存,因此删除库时,其历史记录也会一并删除。

再次导出数据

现在检查退出成本很便宜,等到以后才发现问题则代价高昂。因此,在作出决定前先进行检查。

Nextcloud 将实际文件存储在实际目录中,因此只要对数据目录执行 tar,即使应用以后再也无法启动,您仍可获取文档。Syncthing 在每个对等节点上也采用相同方式,这是这里最可靠的退出方案:文件直接存放在每台设备上。Seafile 的对象存储需要使用 Seafile 或其导出工具,将数据块重新组装成文件。对象存储需要使用 rclone 或等效工具,执行一条命令即可完成。

同步不是备份,数据丢失往往就发生在这一差异上

这里介绍的每个工具都会在设备之间复制更改。删除也是一种更改。在笔记本电脑上删除一个目录后,客户端会通知服务器,服务器会应用这一更改,其他设备也会删除该目录。勒索软件使用的路径相同:它在本地加密文件,客户端检测到文件已修改,然后上传加密后的版本。同步过程完全正常,但数据仍然丢失。

回收站和版本历史可以缓解这一问题。但它们也会过期,执行错误操作的同一个账户可以清空它们,而且它们与当前副本位于同一磁盘上。卷发生故障后,文件及其历史记录会同时丢失。

备份是位于独立硬件上的独立副本,按计划创建,并且您至少成功恢复过一次。备份文件时,也要在同一次任务中备份数据库。只恢复 Nextcloud 数据目录而不恢复数据库,会得到一个不知道这些文件存在的实例;之后执行 occ files:scan 虽然可以恢复文件,却会丢失存储在这些表中的共享和版本历史。从 VPS 计划执行 restic 备份介绍了这种加密、去重的备份方案,包括如何实际测试恢复,而不是想当然地认为备份一定可恢复。

我的选择

对于大多数读者,我会选择 Nextcloud。离开 Dropbox 后,用户最容易缺少的功能,是把链接发给一个永远不会安装任何软件的人,以及在手机上打开文件。Nextcloud 通过官方客户端同时提供这两项功能,而且没有付费层级;为此使用 2 GB 内存是合理的成本。我坚持两个例外。如果该目录始终只属于您,并且始终只位于您拥有的硬件上,请运行 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,并保留每个版本,空间增长会非常快,因此应尽早设置保留策略。将数据放在独立卷上,可以避免这些数据占满根文件系统;根文件系统一旦写满,整个服务器都会停止工作,而不只是某次上传失败。