Themen von einer Discourse-Instanz zu einer anderen verschieben

Möchtest du einige Inhalte von einer Discourse-Instanz zu einer anderen verschieben?

Es gibt ein Befehlszeilentool zum Exportieren eines Themas, einer Reihe von Themen oder einer gesamten Kategorie und ein weiteres Tool zum Importieren dieser Inhalte auf der anderen Seite.

Thema-Export/-Import

  • ein oder mehrere Themen und ihre Antworten
  • die Benutzer, die im Thema gepostet haben

Kategorien-Export/-Import

  • die Kategorie und alle ihre Unterkategorien
  • ihre Sicherheitseinstellungen
  • in den Sicherheitseinstellungen erwähnte benutzerdefinierte Gruppen
    • :warning: Wenn eine der Gruppen die Funktion „Mitgliedschaftsanfragen“ aktiviert hat, stürzt das Tool ab. Schalte dies vor dem Export ab
  • alle Themen und Beiträge in der Kategorie und den Unterkategorien
  • alle Benutzer, die gepostet haben, und ordnet sie den Gruppen zu

Schritt 1: IDs identifizieren

Identifiziere zunächst die ID(s) des =Exports=, den du exportieren möchtest. Diese findest du am Ende der URL, die zum Zugriff verwendet wird.

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

  • https://meta.discourse.org/t/how-to-contribute-to-discourse/53797/12
    (in diesem Fall befindest du dich mitten in einem Thema – nimm die erste Zahl)

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

Kategorien- oder Themen-ID(s)

Mehrere Themen

Du kannst mehr als ein Thema auswählen, indem du IDs durch ein Leerzeichen getrennt hinzufügst; dies funktioniert im obigen Feld (ich glaube jedoch nicht, dass dies für Kategorien funktioniert):

  • 53797 200943 124096

Export-Skript ausführen

Das Tool kann als Root-Benutzer innerhalb des Containers ausgeführt werden:

cd /var/discourse
./launcher enter app

Führe diesen Befehl aus:

discourse export_=Export= =ID=

Die Ausgabe sollte in etwa so aussehen:

Starte Export von =Export=…

Woher kommen die neuen Benutzer alle?
Export gespeichert in =Export=-export-2021-08-27-015437.json

Fertig

Exportierte Datei verschieben

Die exportierte .json-Datei muss vom Inneren des Anwendungsccontainers, in dem du den Export durchgeführt hast, in den Container der empfangenden Instanz verschoben werden. Dies erfordert einige Schritte.

Kopiere sie nach „außen"

Verlasse den Container, falls du dies noch nicht getan hast

exit

Du solltest nun eine Eingabeaufforderung wie diese sehen:

root@yourserver:/var/discourse

Verwende Docker, um die Datei aus dem Container zu kopieren (ich glaube nicht, dass man sie verschieben kann):

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

Verschiebe sie zur anderen Instanz

Dies liegt außerhalb des Rahmens dieser Anleitung, aber dies könnte dir dabei helfen:

Kopiere sie in den Container der empfangenden Instanz

Melde dich per SSH als Root bei deiner empfangenden Instanz an und navigiere zum Discourse-Verzeichnis:

cd /var/discourse

Verwende erneut Docker, um die Datei in den anderen Container zu kopieren

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

Inhalte importieren

Betrete den Container in der empfangenden Instanz:

./launcher enter app

Führe das Import-Skript aus

discourse import_=Export= =FileName=

:cake: Fertig!

Du musst möglicherweise einige offene Punkte bereinigen, aber hoffentlich ist alles erledigt.

Erweiterte Tipps

Fehlendes Ruby-Gem

Bei einem komplexen Kategorien-Import fehlte mir auf meiner Instanz das Ruby-Gem „Listen".
Dies wurde durch folgende Schritte behoben (unter Verwendung des Discourse-Benutzers innerhalb des Containers):

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

Dies hat die Rails-Konsole beschädigt, sodass ein Neuaufbau danach erforderlich war

./launcher rebuild app

Multisite

Verwende in einer Multisite-Umgebung die Umgebungsvariable RAILS_DB.

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

Bitte melde Bugs in der Kategorie Contribute > Bug und fordere Verbesserungen in der Kategorie Contribute > Feature an.


Verwandte Themen


Zuletzt überprüft von @SaraDev am 2022-07-13T00:00:00Z

45 „Gefällt mir“
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