# 合并Discourse和SMF

**URL:** https://meta.discourse.org/t/merge-discourse-and-smf/243531
**Category:** Migration
**Tags:** smf
**Created:** [2022年十一月1日 07:45 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531 "2022-11-01T07:45:53Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![daemon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/daemon/32/256632_2.png) [@daemon](https://meta.discourse.org/u/daemon)
#### Post date: [2022年十一月1日 07:45 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/1 "2022-11-01T07:45:53Z")

</div>

你好！

我有以下问题：  
我从 2017 年开始有一个 SMF 论坛，现在大约有 4000 个帖子。  
去年我并行运行了一个 Discourse 论坛，大约有 1000 个帖子，但目前它已下线，因为我在 2021 年 12 月回到了 SMF。  
好吧，我就是不喜欢 SMF 了，所以我想将其迁移到 Discourse，但我也想保留 Discourse 论坛上的 1000 个帖子。  
我有 Discourse 论坛的备份，从 SMF 备份也没有问题。

将 SMF 迁移到 Discourse 应该不是问题，尽管我从未尝试过。  
我必须承认，两者有相似的类别，但也有差异。

是否可以将两个论坛合并成一个？  
如果可以，最好的方法是什么？

从 SMF 我只需要用户，这两个论坛的用户基本相同（或多或少），以及帖子。原则上，SMF 论坛的所有帖子都可以导入到一个单独的类别中，然后我会自己将它们移动到正确的类别（或者就将其保留在那里作为一种存档）。

我的方法如下：

1. 我备份当前的 SMF，然后将其导入到第二个 SMF 中，并将所有主题和帖子移到一个类别中，然后再次备份以导入到 Discourse。
2. 我将“旧”的 Discourse 论坛重新上线。（有或没有那 1000 个帖子？）
3. 我导入 SMF 的备份。

这里我的问题是这是否可行，因为主题和帖子有来自 SMF 的 ID 和时间戳，并且这些与用户等相关联。

说实话，我不知道如何进行，也不知道这是否可行。  
脚本是否已针对 SMF 2.1.x 进行了调整？

任何帮助都将不胜感激！

---

<div class="post-metadata">

### Author: ![michaelhenderson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaelhenderson/32/76069_2.png) [@michaelhenderson](https://meta.discourse.org/u/michaelhenderson)
#### Post date: [2022年十一月1日 12:17 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/2 "2022-11-01T12:17:36Z")

</div>

我不确定 Discourse 是否支持 SMF 的原生备份。我知道 Discourse 官方团队可以协助迁移，但我不知道费用。过去，我曾使用 Discourse API 迁移大量论坛数据。我在 Discourse 论坛上创建了我的分类。完成后，我创建了一个 Python 脚本来抓取我的旧论坛并用主题、用户等填充新论坛。

---

<div class="post-metadata">

### Author: ![daemon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/daemon/32/256632_2.png) [@daemon](https://meta.discourse.org/u/daemon)
#### Post date: [2022年十一月1日 12:33 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/3 "2022-11-01T12:33:07Z")

</div>

文档中有一条关于如何从 SMF 迁移到 Discourse 的说明。

[https://meta.discourse.org/docs?topic=90314](https://meta.discourse.org/docs?topic=90314)

如果我会编程，用一个脚本从 SMF 抓取数据并导入到 Discourse 中会很好。😉

---

<div class="post-metadata">

### Author: ![michaelhenderson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaelhenderson/32/76069_2.png) [@michaelhenderson](https://meta.discourse.org/u/michaelhenderson)
#### Post date: [2022年十一月1日 13:30 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/4 "2022-11-01T13:30:45Z")

</div>

啊，好的。我不知道他们有关于如何从 SMF2 迁移的官方文档。您的论坛是 SMF2 还是 SMF1 论坛？

---

<div class="post-metadata">

### Author: ![daemon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/daemon/32/256632_2.png) [@daemon](https://meta.discourse.org/u/daemon)
#### Post date: [2022年十一月1日 13:33 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/5 "2022-11-01T13:33:35Z")

</div>

有，也有没有，它是 SMF 2.1.x，SMF 从 2.0.x 到 2.1.x 改变了很多。

而且我仍然有合并两个论坛的问题。

---

<div class="post-metadata">

### Author: ![michaelhenderson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaelhenderson/32/76069_2.png) [@michaelhenderson](https://meta.discourse.org/u/michaelhenderson)
#### Post date: [2022年十一月1日 14:06 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/6 "2022-11-01T14:06:35Z")

</div>

好的。感谢您的信息 🙂  
您在迁移指南的哪个步骤遇到问题？[migration guide](https://meta.discourse.org/docs?topic=90314)

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [2022年十一月1日 14:13 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/7 "2022-11-01T14:13:21Z")

</div>

另请参阅：[Merge two Discourse sites into one](https://meta.discourse.org/t/merge-two-discourse-sites-into-one/95435)

需要注意的是，我没有亲自进行过迁移，但我的方法是：

- 将您的 SMF 数据迁移到一个新的实例
- 使用上述指南合并两个 Discourse 实例

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022年十一月1日 14:19 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/8 "2022-11-01T14:19:23Z")

</div>

嗯，我们都有自己的“锤子”，但我发现将 SMF 站点合并到 Discourse 的脚本会遗漏很多边缘情况（我现在记不清具体是什么了）。然后你还需要进行两次迁移。

我可能会直接在现有的 Discourse 站点上运行 SMF 脚本。当我这样做的时候，我进行了一些调整，比如合并分类和对齐站点之间的用户。如果你懂一点编程，即使你不懂 Ruby，这些脚本通常也足够容易理解。

---

<div class="post-metadata">

### Author: ![daemon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/daemon/32/256632_2.png) [@daemon](https://meta.discourse.org/u/daemon)
#### Post date: [2022年十一月1日 14:27 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/9 "2022-11-01T14:27:22Z")

</div>

> [@michaelhenderson](#):
>
> 好的。感谢您的信息 🙂  
> 您在[迁移指南](https://meta.discourse.org/docs?topic=90314)的哪个步骤遇到了问题？

我现在还没有开始。  
但是，我的问题是 1. 这个脚本是否适用于 SMF2.1，以及 2. 是否可以将 SMF 合并到现有的 Discourse 实例中。

> [@supermathie](#):
>
> 另请参阅：[将两个 Discourse 站点合并为一个](https://meta.discourse.org/t/merge-two-discourse-sites-into-one/95435)
> 
> 尽管我没有亲自进行过迁移，但我的方法是：
> 
> - 将您的 SMF 数据迁移到一个新实例
> - 使用上述指南合并两个 Discourse 实例

我完全错过了这个。感谢您的回答。我认为这应该是可行的。

@pfaffman  
我不需要 SMF 的所有内容，只需要帖子、主题和用户。

也许我需要调整一下才能让它工作。

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022年十一月1日 14:29 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/10 "2022-11-01T14:29:10Z")

</div>

> [@daemon](#):
>
> 我不需要 SMF 的所有东西，只需要帖子、主题和用户。

这几乎就是需要导入的所有内容。导入分类可能比不导入更容易。

> [@daemon](#):
>
> 也许我必须进行一些调整才能使其正常工作。

是的。而且在您尝试之前，无法知道需要多少工作。

---

<div class="post-metadata">

### Author: ![daemon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/daemon/32/256632_2.png) [@daemon](https://meta.discourse.org/u/daemon)
#### Post date: [2022年十一月1日 14:48 UTC](https://meta.discourse.org/t/merge-discourse-and-smf/243531/11 "2022-11-01T14:48:43Z")

</div>

我想我会按以下步骤操作：

1. 导出我的 SMF 并将所有主题（连同帖子）移到一个类别中，然后备份数据库。
2. 安装一个全新的 Discourse 并导入 SMF 备份（希望导入脚本能与 SMF 2.1 一起使用）。
3. 删除并重新安装 Discourse，然后上传我的 Discourse 备份（包括设置和帖子）。
4. 使用 @supermathie 链接的指南将两个 Discourse 论坛合并为一个。

我希望这能奏效，否则我需要找人帮我做。
