Объединение Discourse и SMF

Привет!

У меня возник следующий вопрос:
С 2017 года у меня есть форум на SMF с примерно 4000 сообщениями.
В прошлом году параллельно существовал форум на Discourse с около 1000 сообщениями, но в данный момент он не работает, так как в декабре 2021 года я вернулся к SMF.
Дело в том, что мне больше не нравится SMF, поэтому я хочу мигрировать его на Discourse, но при этом хотелось бы восстановить и те 1000 сообщений из форума на Discourse.
От форума Discourse у меня есть резервная копия, а для SMF создание резервной копии не составляет труда.

Миграция с SMF на Discourse, думаю, не должна быть проблемой, хотя я этого ещё не пробовал.
Признаюсь, что категории в обеих системах похожи, но есть и различия.

Возможно ли объединить оба форума в один?
Если да, то какой лучший способ это сделать?

Из SMF мне нужны только пользователи (они примерно те же в обоих форумах) и сообщения. В принципе, все сообщения из форума SMF можно импортировать в отдельную категорию, а затем я сам перемещу их в нужные категории (или просто оставлю там в качестве архива).

Мой план действий следующий:

  1. Создам резервную копию текущего SMF, импортирую её во второй экземпляр SMF, перемещу все темы и сообщения туда в одну категорию, сделаю новую резервную копию для импорта в Discourse.
  2. Верну «старый» форум Discourse в онлайн (с 1000 сообщениями или без них?).
  3. Импортирую резервную копию из SMF.

Возникает вопрос: сработает ли это вообще, учитывая, что темы и сообщения имеют ID и временные метки из SMF, которые связаны с пользователями и т.д.

Честно говоря, я не знаю, как действовать и возможно ли это в принципе.
Уже ли скрипт адаптирован для SMF 2.1.x?

Любая помощь будет очень кстати!

Не уверен, поддерживает ли Discourse нативное резервное копирование из SMF. Я знаю, что официальная команда Discourse может помочь с миграцией, но не знаю, сколько это стоит. В прошлом я использовал API Discourse для миграции больших объемов данных форума. Я создал категории на форуме Discourse. После этого написал Python-скрипт для парсинга старого форума и загрузки тем, пользователей и прочего в новый.

В документации есть инструкция по миграции с SMF на Discourse.

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

Было бы здорово, если бы был скрипт для извлечения данных из SMF и их импорта в Discourse, если бы я мог программировать такие вещи. :wink:

А, понятно. Я не знал, что у них есть официальная документация по миграции с SMF2. Ваш форум работает на SMF2 или SMF1?

И да, и нет, это SMF 2.1.x, и в SMF многое изменилось с версии 2.0.x на 2.1.x

К тому же у меня всё ещё есть проблема с объединением обоих форумов.

Хорошо. Спасибо за эту информацию :slight_smile:
На каком этапе руководства по миграции у вас возникла проблема?

см. также: Merge two Discourse sites into one

С оговоркой, что я сам не занимался миграциями, мой подход был бы следующим:

  • перенесите данные SMF на новый экземпляр
  • объедините два экземпляра Discourse, следуя руководству выше

Что ж, у каждого из нас есть свои инструменты, но я обнаружил, что скрипт для слияния сайтов на Discourse упускает множество граничных случаев (сейчас я уже не совсем помню, какие именно). К тому же вам предстоит совершить два перехода.

Я бы, скорее всего, просто запустил скрипт для SMF поверх существующего сайта на Discourse. Когда я делал это раньше, я вносил небольшие правки, чтобы, например, категории объединялись, а пользователи синхронизировались между сайтами. Если вы немного разбираетесь в программировании, скрипты обычно достаточно просты для понимания, даже если вы не знаете Ruby.

На самом деле я ещё не начал.
Но мой вопрос был: 1. работает ли этот скрипт с SMF 2.1 и 2. возможно ли объединить SMF с существующим экземпляром Discourse.

Я совершенно упустил это. Спасибо за ответ. Думаю, именно так всё и должно работать.

@pfaffman
Мне не нужно всё из SMF, только сообщения, темы и пользователи.

Возможно, мне придётся повозиться, чтобы заставить это работать.

По сути, это всё, что импортируется. Скорее всего, проще импортировать категории, чем нет.

Да. И невозможно узнать, сколько работы это потребует, пока вы не попробуете.

Я думаю, что выполню следующие шаги:

  1. Возьму свой SMF, перемещу все темы (с постами) в одну категорию, а затем сделаю резервную копию базы данных.
  2. Установлю чистый Discourse и импортирую резервную копию SMF (надеюсь, скрипт импорта будет работать с SMF 2.1).
  3. Удалю и переустановлю Discourse, а затем загрузю свою резервную копию Discourse с настройками и постами.
  4. Объединю два форума Discourse в один, используя руководство, на которое ссылается @supermathie.

Надеюсь, всё сработает, иначе мне придётся нанять кого-то, кто сделает это за меня.