DiscourseとSMFをマージする

こんにちは!

以下の質問があります。
2017年からSMFフォーラムを運営しており、現在約4000件の投稿があります。
昨年、並行してDiscourseフォーラム(約1000件の投稿)を持っていましたが、2021年12月にSMFに戻ったため、現在はオンラインではありません。
さて、SMFはもう好きではないのでDiscourseに移行したいのですが、Discourseフォーラムの1000件の投稿も引き継ぎたいです。
Discourseフォーラムのバックアップはありますが、SMFからのバックアップは問題ありません。

SMFからDiscourseへの移行は、試したことはありませんが、問題ないはずです。
両方とも似たようなカテゴリを持っていますが、違いもあります。

両方のフォーラムを1つにマージすることは可能ですか?
もし可能であれば、最善の方法は何ですか?

SMFからは、ユーザー(両方のフォーラムでほぼ同じ)と投稿のみが必要です。原則として、SMFフォーラムのすべての投稿を別のカテゴリにインポートし、自分で正しいカテゴリに移動する(または単にアーカイブとしてそのままにしておく)ことができます。

私の進め方は以下のようになります。

  1. 現在のSMFのバックアップを取り、それを2番目のSMFにインポートし、すべてのトピックと投稿をそこに単一のカテゴリに移動し、それを再度バックアップしてDiscourseにインポートします。
  2. 「古い」Discourseフォーラムをオンラインに戻します。(1000件の投稿あり/なし?)
  3. SMFからのバックアップをインポートします。

ここで、トピックと投稿にはSMFのIDとタイムスタンプがあり、これらはユーザーなどとリンクされているため、これが機能するかどうかという疑問があります。

正直なところ、どのように進めればよいか、またそれが可能かどうかさえわかりません。
スクリプトはすでにSMF 2.1.xに対応していますか?

どのような助けでも感謝します!

SMFからのネイティブバックアップをDiscourseがサポートしているかどうかわかりません。公式Discourseチームは移行を支援できますが、その費用はわかりません。過去には、Discourse APIを使用して大量のフォーラムデータを移行しました。Discourseフォーラムにカテゴリを作成し、その後、Pythonスクリプトを作成して古いフォーラムをスクレイピングし、トピックやユーザーなどを新しいフォーラムにシードしました。

ドキュメントには、SMFからDiscourseへの移行方法に関する指示があります。

https://meta.discourse.org/docs?topic=90314

SMFからデータをスクレイピングしてDiscourseにインポートするスクリプトがあれば良いのですが、そのようなものをプログラミングできればいいのにと思います。:wink:

「いいね!」 2

ああ、わかりました。SMF2からの移行方法に関する公式ドキュメントがあるとは知りませんでした。あなたのフォーラムはSMF2またはSMF1のフォーラムですか?

はい、そしていいえ、SMF 2.1.x です。SMF は 2.0.x から 2.1.x に大きく変更されました。

そして、まだ両方のフォーラムをマージする問題があります。

「いいね!」 1

承知いたしました。情報提供ありがとうございます :slight_smile:
移行ガイドのどのステップで問題が発生していますか?

「いいね!」 1

関連項目: Merge two Discourse sites into one

注意点として、私は移行作業を行ったことがありませんが、私の進め方は以下のようになります。

  • SMFのデータを新しいインスタンスに移行する
  • 上記のガイドに従って、2つのDiscourseインスタンスをマージする

まあ、みんなそれぞれやり方があるけど、Discourseサイトへのマージスクリプトは、多くのエッジケースを見逃していることに気づいた(今はもう正確には思い出せないけど)。それに、2回の移行が必要になる。

既存のDiscourseサイトの上にSMFスクリプトを実行するのがいいだろう。そうした場合、カテゴリのマージやサイト間のユーザーの連携といった処理を行うように調整した。プログラミングの知識があれば、Rubyを知らなくても、スクリプトは一般的に理解しやすいはずだ。

「いいね!」 2

まだ開始していません。
しかし、私の質問は1. このスクリプトはSMF2.1で動作するか、2. 既存のDiscourseインスタンスにSMFをマージすることは可能か、ということでした。

完全にこれを見落としていました。回答ありがとうございます。これでうまくいくはずだと思います。

@pfaffman
SMFからすべてが必要なわけではなく、投稿、トピック、ユーザーだけが必要です。

うまく動作させるために、いじくり回す必要があるかもしれません。

インポートされるのは、ほぼすべてです。カテゴリをインポートしないよりもインポートする方が簡単でしょう。

はい。そして、試してみるまで、どれだけの作業が必要になるかはわかりません。

以下のような手順を実行すると思います。

  1. SMF を取得し、すべてのトピック(投稿を含む)を 1 つのカテゴリに移動してから、db のバックアップを作成します。
  2. 新しい Discourse をインストールし、SMF バックアップをインポートします(インポート スクリプトが SMF 2.1 で動作することを願っています)。
  3. Discourse を削除して再インストールし、設定と投稿を含む Discourse バックアップをアップロードします。
  4. @supermathie がリンクしたガイドを使用して、2 つの Discourse フォーラムを 1 つにマージします。

これでうまくいくことを願っています。そうでなければ、誰かに依頼して実行してもらう必要があります。