Discourse 备份和恢复中有关附件的问题

下面的这个问题是在官方论坛上网友问的内容是:

  • 我想问一下,备份和附件分别挂载了不同的S3 备份的时候会把附件的S3里面的内容也都一起备份了吗?
  • 如果不选择包含上传的图片和附件,那么恢复备份的时候,附件用的S3里面的内容还能再论坛里正常显示吗?

总结

针对 Discourse 的备份内容还真没有仔细查看。

看了下我们的备份后才了解到:

如果你的附件是使用 AWS 的云存储的话,备份的时候哪怕选择上 备份时包含附件

2024-07-25_07-11-03

上传到 AWS 上的附件也是不会放在你的备份文件里面的。

里面的附件就是存储在你本地计算机上,但是 AWS 上没有的内容。

从我们的网站备份大小上就能看出来,如果包含附件的话,备份的大小不可能只有 80 多 MB。

2024-07-25_07-13-27

说明这里面的备份只有数据库和本地附件。

打开这个下载文件,看到里面只有 2 个文件夹,一个是 dump,这个就是 PGSQL 的数据库 Dump 文件。

2024-07-25_07-15-13

另外一个就是上传的文件夹,这个文件夹里面只有你本地上传的附件,没有存储到 AWS 上面的,对我们来说这个文件夹就很小,没有几个文件。

这是因为在社区开始运行没有多久后我们就全部把附件上传到 AWS 上了。

2024-07-25_07-17-28

上图显示的是 PGSQL 的 Dump 文件内容,可以从 dump 文件中看到当前 Discourse 数据库容器运行的 PGSQL 版本。

如果你想本地看下数据库的话,这个 Dump 文件也可以直接导入到你本地容器上的。

AWS 恢复的问题

如果使用了 AWS 附件,但是没有使用 AWS 的 CDN 的话,那么正文中的内容就是你 AWS 上的绝对路径地址。

在主题 MD 文件上的表现方式为:

2024-07-25_07-19-42

但是,当内容发布后,实际的 HTML 代码就被 Discourse 替换成你的 CDN 绝对地址了。

2024-07-25_07-20-36

因此,基于上面的回答,在备份的时候如果不选择备份附件,当你恢复的时候,附件的内容不受影响。

例外

其实附件也有受到影响的,主要就是因为域名切换。

因为前期我们有过一次域名切换,但附件内容都在,就是正文无法关联,就算重构 HTML 也无法关联。

这个时候麻烦点,可能需要到数据库里面直接改一下。

只要你不随便换域名,通常这个都不是问题。