Mover temas de una instancia de Discourse a otra

¿Necesitas mover algunos datos de una instancia de Discourse a otra?

Existe una herramienta de línea de comandos para exportar un tema, un conjunto de temas o una categoría completa, y otra para importarlos en el extremo receptor.

Exportación/Importación de temas

  • uno o más temas y sus respuestas
  • los usuarios que publicaron en el tema

Exportación/Importación de categorías

  • la categoría y todas sus subcategorías
  • su configuración de seguridad
  • grupos personalizados mencionados en la configuración de seguridad
    • :warning: si alguno de los grupos tiene habilitadas las ‘solicitudes de membresía’, se producirá un error. Desactívalo antes de la exportación
  • todos los temas y publicaciones en la categoría y subcategorías
  • todos los usuarios que publicaron, y los asigna a los grupos

Inicio: Identificar los IDs

Primero, identifica el/los ID(s) de la =Exportación= que deseas exportar. Lo encontrarás al final de la URL utilizada para acceder a ella.

  • https://meta.discourse.org/t/how-to-contribute-to-discourse/53797

  • https://meta.discourse.org/t/how-to-contribute-to-discourse/53797/12
    (en este caso estás en medio de un tema: toma el primer número)

  • https://meta.discourse.org/c/howto/faq/4

ID(s) de categoría o tema

Múltiples temas

Puedes seleccionar más de un tema añadiendo IDs separados por un espacio; esto funciona en el campo anterior (creo que esto no funciona para categorías):

  • 53797 200943 124096

Ejecutar el script de exportación

La herramienta se puede ejecutar como usuario root dentro del contenedor:

cd /var/discourse
./launcher enter app

Ejecuta este comando:

discourse export_=Export= =ID=

La salida debería parecerse a esto:

Iniciando exportación de =Exportación=…

¿De dónde vienen todos los nuevos usuarios?
Exportación guardada en =Exportación=-export-2021-08-27-015437.json

Hecho

Mover el archivo exportado

El archivo .json exportado debe moverse desde el interior del contenedor de la aplicación donde realizaste la exportación hasta el interior del contenedor de la instancia receptora. Esto requiere varios pasos.

Copiarlo al ‘exterior’

Sal del contenedor si aún no lo has hecho

exit

Ahora deberías tener un indicador como este:

root@yourserver:/var/discourse

Usa docker para copiar el archivo fuera del contenedor (creo que no puedes moverlo)

docker cp app:/var/www/discourse/=FileName= .

Moverlo a la otra instancia

Esto está fuera del alcance de esta guía, pero esto podría ayudarte a llegar allí:

Copiarlo dentro del contenedor en la instancia receptora

Conéctate por SSH a tu instancia receptora como root y accede al directorio de Discourse:

cd /var/discourse

Usa docker nuevamente para copiar el archivo en el otro contenedor

docker cp =FileName= app:/var/www/discourse

Importar el contenido

Entra en el contenedor en la instancia receptora:

./launcher enter app

Ejecuta el script de importación

discourse import_=Export= =FileName=

:cake: ¡Hecho!

Es posible que necesites resolver algunos detalles pendientes, pero con suerte, todo debería estar resuelto.

Consejos avanzados

Falta la gema de Ruby

Al realizar una importación compleja de categorías, a mi instancia le faltaba la gema ‘Listen’ de Ruby.
Esto se solucionó haciendo lo siguiente: (usando el usuario de Discourse dentro del contenedor)

./launcher enter app
su discourse
bundle config --delete without
bundle config --delete with
bundle install
exit
exit

Esto rompió la consola de rails, lo que requirió una reconstrucción posterior

./launcher rebuild app

Multisitio

En un entorno multisitio, utiliza la variable de entorno RAILS_DB.

RAILS_DB=xxxmoves discourse export_=Export= =ID=
RAILS_DB=dancerehab discourse import_=Export= =FileName=

Por favor, informa de errores en la categoría Contribute > Bug y solicita mejoras en la categoría Contribute > Feature.


Temas relacionados


Última revisión por @SaraDev en 2022-07-13T00:00:00Z

45 Me gusta
UI: Topic and Category Export/Import
CLI command to migrate a single category
Moving topics between sites?
Category/Topic export fails with error "database "discourse_development" does not exist"
Easiest way to export a single topic?
Saving a Conversation
Migrate user custom fields to another instance
Error Importing Categories from a Discourse Instance to Another
How to export user data from a category on a hosted site
Import CSV User Activity from one Discourse to Another
How use API to convert topic in discourse1.com to discourse2.com
Can sub-forums of the same instance split up and move to new independent servers (or discourse instances)?
Help migrating category from one instance to another without admin on the source instance
I wonder how to add hundreds of users into a group? Is there any api?
Adding default sets of topics, categories and users to a new Discourse
Downloading Content
Can we combine 2 separate discourse sites?
Tracking and resolving a schema drift cause
Merge two Discourse forums into one
Moving topics from a forum on one website to a forum on another website
Transfer topics between forums?
Forum Aquisition
Transfering inbox group messages to another instance?
Transfering inbox group messages to another instance?
Imported categories are not in parent category
Copy categories / topics
How to download Comments and Topics
Selective backups skipping settings and config
Test driving admin/moderation features
Add backup to existing Discourse instance
Merging two Discourse forums
Migrating vBulletin onto existing and live Discourse instance
Migrate topics from one discourse instance to another?
A system where people have to start at lesson 1, and cannot see the other lessons?
How to divide my community into 2 parts