如何从Discourse迁移到另一个社区平台?

您好!我打算将我的社区从 Discourse 迁移到另一个平台。如何将内容和用户导出为 SQL 文件?

你好 :slight_smile:
只需从您的管理面板执行备份。所有内容都在其中。

5 个赞

出于好奇,您愿意分享为什么将要离开 Discourse 吗?

5 个赞

@Canapin 非常感谢您的帮助!只是确认一下操作方式:在管理员面板中,我打开备份部分,然后下载最近一天的备份,对吗?

1 个赞

是的,正是如此。存档应包含 SQL 转储以及上传的文件。

3 个赞

为了安全起见,您也可以先进行备份,然后下载最新的备份

4 个赞

@Gabriel_Fernando_Mar

仔细查看您的截图后,似乎它们只包含数据库,而不包含上传文件。我们可以从 sql.gz 文件名部分看出这一点。

在创建以 .tar.gz 结尾的新备份之前,您可能需要启用 包含上传文件的备份 的站点设置。

示例:

抱歉我之前的回复有误导!

2 个赞

您好,@Canapin!希望您一切安好 :slight_smile:

很抱歉,我们在迁移 Discourse 中的内容时遇到了一些问题。之前我们已将 SQL 备份文件发送到新工具,他们发现的一个错误如下:

  1. 有大量的附件丢失。我的工程师在处理引用附件但您提供的导出文件中附件不可用的主题时发现了这一点。我们怀疑这些附件保存在 Discourse 的其他地方(例如,单独的数据库)。您能否再次检查一下是否有可以找到并提供给我们的其他附件。

在您在此主题中提供指导后,我选择了包含上传文件的选项,并生成了一个新的 .tar 格式文件,但他们仍然显示错误(下图)。
是否有可能即使选择了备份设置中的“上传”选项,图片和其他媒体仍未包含在迁移文件中?可能是什么原因?
看起来仍有超过 8100 个文件丢失。

迁移之前它们就丢失了吗?

您应该使用 uploads 表中的 url 路径来确定文件的位置。
然后,您可能会发现这些文件存储在 S3 上。这些文件不包含在您的备份中。您的导入脚本可以在需要时从 S3 中检索它们(或者将它们保留在那里,只需引用它们)。

3 个赞

为了详细说明我的问题,您可能遇到以下几种情况:

  • 上传内容均不在您的备份文件中
  • 部分上传内容在您的备份文件中
  • 所有(可用的)上传内容均在您的备份文件中

不幸的是,我们无法判断您具体遇到了哪种情况。

rake posts:missing_uploads 可能会有帮助。

我当然理解您可能不想谈论这个话题,但请允许我告诉您,我也非常想知道迁移的原因,就像 @Canapin 询问的那样。其他人可能也想知道 :+1: 他们只是比我更有礼貌 :laughing: 谢谢!

1 个赞

@supermathie @RGJ @Canapin 感谢您的回答!我将在此列出我们为生成备份文件所执行的步骤。如果您发现任何配置错误,请告知我。

备份设置:
备份位置在 S3。这是正确的,还是我们应该选择另一个选项?另一个选项是“本地存储”,在 Free Translate 中。这是什么意思?


完成这些设置后,我们下载了 .tar 文件并将其发送给了其他平台团队。

我们犯错了吗?我们需要在备份设置中调整任何内容吗?或者其他平台团队需要某种访问权限或另一个文件?

抱歉提问,但我在迁移和脚本方面技术知识不多。我们认为可以直接从 Discourse 原生导出。

您好,@Mevo!主要原因是用户界面和体验。
我们的社区正在不断壮大,我们需要一个更友好、更直观的平台。
还有一些用户参与度问题:我们一直在探索游戏化、电子邮件营销和其他功能。

4 个赞

谢谢!你们决定搬到哪里去?

2 个赞

您的备份文件没有问题。

您只需指示“其他平台团队”通过检查 uploads 表中的 url 列来在 S3 存储桶中查找文件,而不是尝试在备份文件中查找。

导出很容易,导入到另一个系统则不然……

9 个赞

如果希望备份中包含 S3 文件,则需要启用 include_s3_uploads_in_backups

默认情况下,此选项处于关闭状态,因为将所有上传内容从 S3 拉取下来,然后打包成 tar 包再传回去会非常耗时,而且可能成本高昂。

3 个赞

@supermathie @RGJ @Canapin 你们好!希望你们一切都好!我在迁移图片时仍然遇到一些问题。下面是当前备份设置的截图以及 Insided 平台团队的答复:


以下是他们的工程师提供的补充说明:

  • 在我 5 月 17 日提供的文件中(.tar 格式),文件本身并未包含在内。

  • 例如,url 列的值为:/uploads/db0693/original/2X/9/9fedfd520d43a0e03281fc4a6e636ad2116a99a3.gif。他们可以通过路径(uploads/db0693/etc)在提供的数据中找到该文件。因此,此文件不在 Missing-Files.txt 文档中。

  • 另一个条目具有以下 url://upload-forum-blip.s3.dualstack.us-east-1.amazonaws.com/uploads/db0693/original/2X/d/da4a7824e7a48d73c0cb8724225e5dddc111ed63.jpeg。在这里,他们也尝试通过数据转储中的路径(uploads/db0693/etc)查找实际文件。但此文件不是交付文件的一部分,因此它在列表中。

  • 根据您链接的社区帖子中的答复,我们怀疑您需要手动导航到您的 s3 存储桶(upload-forum-blip.s3.dualstack.us-east-1.amazonaws.com)并下载那里的 upload 文件夹(及子文件夹),以及他们导出备份时获得的文件。

这些说明有道理吗?是否可以由支持团队的某位成员联系我来导出这些文件?
谢谢!

1 个赞

:face_with_raised_eyebrow: 所以这个文件就位于他们找到的URL(这里

你是在跟我开玩笑吗?这些工程师连a)在他们的导入脚本中下载文件和/或b)使用S3browser(S3browser)或Cyberduck(Cyberduck)之类的工具下载这些文件都做不到吗?

你似乎托管在Communiteq,我们通常会避免使用客户自行管理的S3存储桶,但我们还是来处理这件事吧。只需向Communiteq支持部门提交一个工单,这样我们就有你的许可记录,我会确保你获得这些文件的下载。

但如果这就是他们给你的“支持”,你可能需要三思而后行,是否要搬到那里。

3 个赞

您是否按建议启用了 include_s3_uploads_in_backups

另外,S3 凭证就在那里,可用于下载文件。

1 个赞