🇨🇳 How to back up Discourse to S3 | Discourse 如何备份到 S3

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

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

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


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

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

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


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

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


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

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


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

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

AWS 恢复的问题

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

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


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


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

例外

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

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

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

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

更详细的讨论,请访问:Discourse 备份和恢复中有关附件的问题 - Discourse - iSharkFly