下面的这个问题是在官方论坛上网友问的:🇨🇳 How to back up Discourse to S3 | Discourse 如何备份到 S3 - #3 by copymonopoly - Self-Hosting - Discourse Meta
内容是:
-
我想问一下,备份和附件分别挂载了不同的S3 备份的时候会把附件的S3里面的内容也都一起备份了吗?
-
如果不选择包含上传的图片和附件,那么恢复备份的时候,附件用的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 也无法关联。
这个时候麻烦点,可能需要到数据库里面直接改一下。
只要你不随便换域名,通常这个都不是问题。