在自托管服务器上正确备份/保护 Discourse 的方法?

您好,

在自托管服务器上,有哪些最佳方法可以防止我们的论坛永久丢失?如何正确且安全地备份我们珍贵的数据?

在一个已被删除的主题中,@falco 表示:

执行文件系统快照不受支持,并可能导致数据丢失。

此外,关于 Hetzner 提供的备份功能,该公司表示

我们建议您关闭服务器,以确保磁盘上的数据一致性。

因此,我猜这确实不是一个推荐的解决方案……还是说并非如此?

在我的论坛上,我使用 rclone 将本地备份文件夹与 Google Drive 文件夹进行同步。

如果我的服务器崩溃,我在 Google Drive 中拥有每周的备份。
如果本地备份消失,并且 rclone 在同步当前空文件夹后删除了 Drive 中的备份,已删除的备份仍然可用,因为它们会保留在 Google Drive 的回收站中。

因此,我觉得这是一种相当可靠的保护论坛数据的方法。

但真的如此吗?是否有其他易于安装且可靠的解决方案?
关于 rclone:它与多种存储系统兼容。是否有更适合用于存储和同步备份的选择?

2 个赞

永远不存在 100% 安全的数据存储方式。明确这一点后,Discourse 拥有一个非常出色的备份流程,可按计划定期运行。

如果我不太信任多台设备,并且可以增加每月的支出,我会开始将备份卸载到 S3 并启用 S3 复制。然后,我会编写一个脚本,将这些备份复制到我的本地机器上,或许每月一次将所有数据卸载到外部硬盘。

这样,你就拥有了多个故障点,它们不会同时全部失效。S3 的可靠性相当高,而你的本地机器由于日常使用且尚未出现故障,也应处于良好状态(尽管它可能会故障,但肯定比 S3 的大范围故障更快发生)。

由于这种“安全”方法并不依赖信息安全措施(如加密等),最佳做法是在多个地点保存多份副本。

2 个赞

如果你远程同步 /var/discourse/containers/var/discourse/shared/standalone/backups,那就没问题了。如果你的服务器宕机,你只需要容器 yml 文件和最新的备份。我建议每天进行备份。如果你特别聪明且投入,可以在 rsync 目标上设置一些清理流程,保留每周、每月和每年的备份。

3 个赞

我刚刚写了这篇文章:Best Practices for Backups

7 个赞

另请参阅:

5 个赞

自动备份到亚马逊 S3,该功能已内置。

4 个赞

我们多年来一直使用 rsync,对我们来说效果很好。我们每天都会将备份 rsync 到我们自行控制和管理的外部备份位置,因此即使数据中心遭遇灾难,我们也能保留所有重要数据 :slight_smile:

此外,在考虑备份和安全时,请记住 IT 安全包含三个关键领域:

  • 可用性
  • 完整性
  • 机密性

备份数据时,需要同时考虑这三个领域。

如果您对机密性有较高要求,将备份存储到第三方解决方案(以及不在您严格管理控制之下、属于他人的云平台)可能不是最佳选择。

安全 并非一刀切,而是基于您独特的风险管理模型。该模型同样包含三个关键方面:

  • 威胁
  • 漏洞
  • 关键性

正是这三个领域的交集,共同推动您的备份与恢复策略。

  • 某些网站因其内容或领域(商业模式)而比其他网站面临更多威胁,而另一些则对不法分子毫无吸引力。

  • 有些人懂得如何安全地托管系统、安装最新补丁、保护文件系统等等,因此相比那些在此方面缺乏知识(或只是懒惰)的人,他们面临的漏洞更少。

  • 有些人运营着极其关键的网站和论坛。例如,如果网站宕机,他们可能一天(甚至一小时)内就会损失大量资金,或其品牌声誉将受损。

  • 而另一些人,如果网站宕机,可能只有少数人注意到或在意,也不会造成任何经济损失。

因此,无需将这个有趣的主题变成一本安全专著,您必须根据自身独特的商业模式和风险因素来理解自身的风险管理需求,而不是套用他人的风险管理模型。

一刀切并不适用……这是 IT 人员理解 IT 安全时最重要的一课(但真正理解的人却寥寥无几)。备份和恢复是这一方程中的关键部分。

顺便一提:我们从不将备份委托给任何第三方(绝对不),并始终将其保存在我们技术和行政控制下的安全位置。


作为题外话,我的一位朋友是世界顶级的洞穴潜水员(探险家)。当他潜入并探索水下洞穴时,他会配备双重甚至三重冗余(气瓶、面罩、电脑、灯光、电池、刀具、潜水推进器等)。我曾见过他布置超过 40 瓶气体,并随身携带至少两台水下推进器。他懂得如何在水下管理风险。

然而,这位世界著名的洞穴潜水探险家却从不备份自己的台式电脑,而且经常因为笔记本电脑崩溃而丢失所有数据。他说他不在乎是否丢失 PowerPoint 演示文稿……因此,这是他个人的风险管理策略。他更看重自己的生命,而非几个数字文件。

生活就是这样……


因此,回答您的问题。我们已自行托管近 30 年。我们一直使用 rsync 甚至 sftp 将备份存储在我们可以访问的服务器上,并且在这 30 年互联网服务器运营期间从未遇到过任何问题。我甚至在家庭网络中拥有一份额外副本,存放在一台作为私有存储设备的 Mac Mini 上。就我的风险管理模型而言,这就是我所谓的“安全”。

5 个赞

感谢提供这么多信息 :+1:t6:

我想知道为什么我甚至没提到 S3 :thinking: 也许我潜意识里只考虑了免费的备份方案……尽管我其实有 Google Drive 订阅 :upside_down_face:

话说回来,针对 Discourse 备份存储,我该如何正确估算 S3 的费用?
我不太确定该如何填写计算器中的各个字段:

就我的情况而言,我的备份(包含上传文件)大约为 1GB,我打算每天进行备份,并保留 4 到 7 天的备份记录。

还有一件事我没提到:我希望我的另一位管理员也能访问远程备份。
目前在我的 Google Drive 上,我已经将存储备份的目录共享给了他。
是否也可以共享 S3 备份的访问权限呢?

1 个赞

预计每月成本为 7 GB-月(并预留一定的增长空间),此外每次需要获取备份时还会产生额外的传输费用。

1 个赞

发送或检索备份是否算作 1 次请求?