Ein XenForo-Forum zu Discourse migrieren

Ist es sicher, meine Vertrauensstufen, Abzeichen und andere Discourse-Einstellungen vor dem Import festzulegen? Ich denke, dieser Importer wird nur Beiträge/Threads/Profile einfügen/ersetzen? Ich würde es hassen, alle Einstellungen in Discourse vorzunehmen und diese Einstellungen dann durch diesen Import löschen zu lassen, obwohl ich im Code nichts sehe, das damit zusammenhängt.

Ja, aber machen Sie ein Backup. Sie werden wahrscheinlich Dinge ändern und es mehrmals ausführen müssen, wobei Sie von vorne beginnen. Behalten Sie also ein Backup Ihrer Konfiguration ohne importierte Daten.

Er fügt hinzu. Er ersetzt meistens nichts. Wenn ein Benutzer existiert, wird er nicht geändert. Er wird keine von Ihnen eingerichteten Kategorien verwenden. Wenn Sie ihn erneut mit einer aktualisierten Datenbank von Ihrer alten Website ausführen, werden neue Daten hinzugefügt, aber Dinge, die bei früheren Ausführungen importiert wurden, werden nicht geändert. Das macht ihn viel schneller, aber wenn Sie das Skript aus irgendeinem Grund ändern müssen, müssten Sie alles löschen und von vorne beginnen.

4 „Gefällt mir“

Zwei Dinge. Erstens, gibt es eine Möglichkeit, dies schneller laufen zu lassen? Ich habe einen 32-CPU-Linode mit 64 GB RAM und es dauert immer noch 4-5 Stunden, um 250.000 Beiträge zu importieren.

Zweitens, importiert es Anhänge vor oder nach den Beiträgen? Denn wenn ich mir das Skript ansehe, sieht es so aus, als ob es dies danach tut. Es ist nur ärgerlich, 4-5 Stunden warten zu müssen, nur um herauszufinden, dass die Anhänge nicht importiert wurden.

Alles hängt größtenteils von den vorherigen Daten ab, die Nachbearbeitung kann die mehreren CPUs nutzen, aber das beginnt erst, wenn Sie größtenteils fertig sind. Holen Sie sich eine einzelne, schnellere CPU.

Sie können das Skript so ändern, dass nur aktuelle Uploads importiert werden, aber wenn Sie keine größeren Entwicklungen planen, warten Sie einfach die 5 Stunden ab.

2 „Gefällt mir“

Nun, ich habe das jetzt mehrmals versucht und die Anhänge werden nicht importiert, und mir gehen die Ideen aus. Ich hoffe, jemand kann mir helfen (danke @pfaffman für deine bisherigen Beiträge).

Ich habe die *.data-Dateien in ihrer ursprünglichen Ordnerstruktur von XenForo (also den Ordner ‘attachments’) in /root/attachments im Docker-Container platziert. Ich habe das Import-Skript auf /root/attachments aktualisiert. Ich kann die Dateien auf der Kommandozeile mit ls in /root/attachments sehen.

Ich habe das Skript ausgeführt, und jedes Mal (nach etwa 4-5 Stunden Wartezeit) zeigen alle Beiträge mit Anhängen/Fotos den alten BBCode von XenForo ([ATTACH]123456[/ATTACH]) an, und ich sehe keine Bilder oder Anhänge in der Discourse-Installation.

Was mache ich hier falsch? Ich habe das Gefühl, ich bin zu 90% fertig, mir fehlt nur noch etwas.

Sie müssen sich den Code ansehen. Läuft der Anhangscode überhaupt? Entsprechen Ihre Anhänge dem Format, das das Skript erwartet?

Wenn die Anhangsfunktion nach dem Import der Beiträge ausgeführt wird, müssen Sie nicht alles noch einmal ausführen. Sie überspringt einfach die Beiträge (oder kommentieren Sie den Beitragsimport aus, um ihn etwas schneller zu machen).

Es gibt jedoch eine Reihe von Dingen, die schiefgehen könnten, von einer falschen Konfiguration bis hin zu einem Problem mit Ihrer Zenforo-Version. Sie müssen sich den Code ansehen und einige Debugging-Ausgaben hinzufügen, um zu sehen, was vor sich geht.

Nur zur Information für alle, die auf diesen Thread stoßen: Ich konnte die Anhänge mit diesem Skript nicht zum Laufen bringen, egal wo ich sie platziert habe. Meiner Meinung nach muss das Skript überarbeitet werden und die Anweisungen müssen insbesondere viel klarer darüber sein, was wohin gehört und wie.

Bis dahin würde ich dieses Skript als fehlerhaft betrachten.

Es funktioniert wahrscheinlich für einige Leute mit einigen Versionen und einigen Konfigurationen, nur nicht mit der, die Sie verwenden. Es ist überraschend, wie unterschiedlich jeder Import ist.

Ist das offizielle XenForo-Importskript jetzt kaputt?

Benutzer und Kategorien werden zwar importiert,
aber beim Importieren von Beiträgen mit Anhängen gibt es Probleme

script/import_scripts/xenforo.rb:180:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:908:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:907:in `loop'
/var/www/discourse/script/import_scripts/base.rb:907:in `batches'
script/import_scripts/xenforo.rb:174:in `import_posts'
script/import_scripts/xenforo.rb:32:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/xenforo.rb:396:in `<main>'
   113289 / 146471 ( 77.3%)  [3766 items/min]  Exception while creating post 162516. Skipping.
undefined method `synchronize' for #<DiscourseRedis:0x00005571b2d0c5b8>
/var/www/discourse/lib/discourse_redis.rb:44:in `method_missing'
/var/www/discourse/lib/distributed_mutex.rb:84:in `try_to_get_lock'
/var/www/discourse/lib/distributed_mutex.rb:61:in `get_lock'
/var/www/discourse/lib/distributed_mutex.rb:30:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:14:in `synchronize'
/var/www/discourse/lib/post_creator.rb:407:in `transaction'
/var/www/discourse/lib/post_creator.rb:205:in `create'
/var/www/discourse/script/import_scripts/base.rb:580:in `create_post'
/var/www/discourse/script/import_scripts/base.rb:528:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:515:in `each'
/var/www/discourse/script/import_scripts/base.rb:515:in `create_posts'
script/import_scripts/xenforo.rb:180:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:908:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:907:in `loop'
/var/www/discourse/script/import_scripts/base.rb:907:in `batches'
script/import_scripts/xenforo.rb:174:in `import_posts'
script/import_scripts/xenforo.rb:32:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/xenforo.rb:396:in `<main>'
   113290 / 146471 ( 77.3%)  [3766 items/min]  Exception while creating post 162517. Skipping.
undefined method `synchronize' for #<DiscourseRedis:0x00005571b2d0c5b8>
/var/www/discourse/lib/discourse_redis.rb:44:in `method_missing'
/var/www/discourse/lib/distributed_mutex.rb:84:in `try_to_get_lock'
/var/www/discourse/lib/distributed_mutex.rb:61:in `get_lock'
/var/www/discourse/lib/distributed_mutex.rb:30:in `block in synchronize'
/var/www/disc

Welche Version von Redis haben Sie?

Ich habe es gerade noch geschafft, meine bestehende XenForo-Community in Discourse zu überführen, daher dachte ich, ich teile meine Erfahrungen hier, um jedem zu helfen, der dasselbe versucht. Bedenken Sie, dass ich nicht weiß, was ich tue, daher können einige meiner Schlussfolgerungen falsch sein. Ich konnte den Import nach Discourse mit einem Verlust von etwa 20 % an Anhängen abschließen. Ich kann nicht wirklich erklären, warum, aber das Problem scheint nur die letzten 2-3 Jahre an Beiträgen in meinem Forum zu betreffen, während alles davor eine Erfolgsquote von etwa 95 % beim Import hatte. Meine einzige Vermutung ist, dass es etwas mit dem Wechsel von XF 1.x zu XF 2.x zu tun hat.

Jeder, der dies versucht, sollte wissen, dass dieses Skript viel Aktualisierung benötigt, um mit XF 2.x zu funktionieren. Insbesondere die Zeilen 375-378 enthalten nicht die richtigen Datenbanktabellen für den Import von Anhängen aus der XenForo Media Gallery. Ich habe dies umgangen, indem ich die XFMG vom Forum getrennt und deinstalliert habe, da ich die XFMG nur dazu verwendet habe, Anhänge vom Forum zu spiegeln.

Wenn Sie neugierig sind, bezieht sich Zeile 376 auf die Tabelle xengallery_media, was offensichtlich eine Referenz auf XFMG 1.x ist, da diese Tabelle in XFMG 2.x in xf_mg_media_item geändert wurde. Den Rest kann ich nicht zuordnen und ich vermute, dass zusätzlicher Code benötigt wird, um die IDs von Anhängen mit Beiträgen abzugleichen.

Ich habe Zeile 314 auskommentiert: s = process_xf_attachments(:gallery, s)

Damit das Skript wegen der fehlenden SQL-Tabelle nicht abstürzt.

Danach habe ich Jack51’s Beitrag in diesem Thread befolgt:

mit den folgenden Änderungen:

Schritt sechs benötigt die Aktualisierung der Mariadb-Version. Ändern Sie mariadb-server-10.3 in mariadb-server-10.5.

Schritt sieben sollte service mariadb start anstelle von service mysql start sein.

Ich habe geändert

frozen_string_literal: true

in

frozen_string_literal: false

Da ich die gleiche Fehlermeldung erhalten habe, die jemand anderes in diesem Thread erwähnt hat.

Es scheint, dass es in diesem Thread viel Verwirrung darüber gab, wo die Anhänge platziert werden sollen, damit das Skript sie sieht, und ich muss zugeben, dass ich auch damit einige Schwierigkeiten hatte. Für Leute, die Docker (wie ich) völlig neu sind, wäre es äußerst hilfreich darauf hinzuweisen, dass Docker im Wesentlichen eine virtuelle Maschine ist, die auf Ihrem Server läuft (sodass Sie mit zwei verschiedenen Betriebssystemen/Dateisystemen zu tun haben), es aber einen gemeinsamen Bereich für die Übertragung von Dateien gibt:

/var/discourse/shared/standalone/tmp

Dieses Verzeichnis befindet sich auf Ihrem Host-Computer, und dort abgelegte Dateien erscheinen in:

/shared/tmp

wenn Sie den Docker-Container betreten haben. Wenn Sie also die gleiche Datei-/Ordnerstruktur von XenForo beibehalten, würden Sie die Ordner kopieren:

internal_data/attachments

nach

/var/discourse/shared/standalone/tmp

auf Ihrem Host-Computer, und dieser Ordner würde nach dem Betreten Ihres Docker-Containers unter /shared/tmp erscheinen.

Als Nächstes ändern Sie beim Bearbeiten des xenforo.rb-Skripts:

ATTACHMENT_DIR = '/tmp/attachments'

in

ATTACHMENT_DIR = '/shared/tmp/internal_data/attachments'

und Ihre Anhänge werden am richtigen Ort gefunden. Es ist erwähnenswert, dass XenForo auch einen Ordner data/attachments hat, aber dieser ist mit .jpg-Dateien gefüllt anstelle der .data-Dateien, nach denen Sie suchen. Ich habe gesehen, dass jemand diesen Fehler zuvor in diesem Thread gemacht hat, daher dachte ich, es wäre erwähnenswert.

Außerdem habe ich eine Berechtigungsfehlermeldung vom Skript erhalten, daher müssen Sie möglicherweise das Verzeichnis chmodden:

sudo chmod a+rw -R /shared/tmp/internal_data/

Ich würde sagen, das größte Anzeichen dafür, dass das Skript Ihre Anhänge nicht erkennt, ist, dass es seltsam ruhig ist, obwohl es wahrscheinlich gelegentliche Fehler ausgeben sollte:

Wenn der Import also mehrere Stunden dauert, ohne dass ein einziger Fehler aufgeführt wird, erkennt er wahrscheinlich die Anhänge nicht.

Das ist alles, was ich habe. Verstehen Sie mich nicht falsch, ich bin froh, dass dieses Skript überhaupt existiert, eine Erfolgsquote von 80 % ist besser als nichts (ich hatte eine ähnliche Erfolgsquote beim Wechsel von vBulletin zu XenForo im Jahr 2009), und ich freue mich darauf, mit der Discourse-Plattform zu arbeiten. Hoffentlich hilft dieser Beitrag einigen Leuten und vielleicht kann eines Tages jemand mit besseren Fähigkeiten als ich dieses Skript aktualisieren, damit es etwas besser funktioniert.

4 „Gefällt mir“

Das aktuelle Import-Skript hat viele Anhänge übersehen, da diese nicht immer in den BBcode des Beitrags eingebettet sind. Ich habe eine Pull-Anfrage mit einigen Verbesserungen und Korrekturen erstellt. Das Skript erkennt nun alle Anhänge, importiert auch Likes, Avatare und private Nachrichten und erstellt Permalinks für Kategorien und Themen.

5 „Gefällt mir“

@gerhard Ich glaube, dieser PR liegt gerade bei dir, könntest du ihn bitte zusammenführen, wenn du etwas Zeit hast?

2 „Gefällt mir“

Ja, das ist mir gestern auch aufgefallen. :blush: Ich hatte es komplett vergessen. Ich werde es mir heute oder nächste Woche ansehen.

1 „Gefällt mir“

Ist das jetzt in den Code integriert? Ich musste aus anderen Gründen zu XenForo zurückkehren, aber ich würde gerne zu Discourse wechseln, wenn dieses Skript funktioniert.

Entschuldigung, ich hätte einfach auf GitHub nachsehen sollen. Es sieht so aus, als wäre es am 28. November integriert worden.

1 „Gefällt mir“

6 Beiträge wurden in ein neues Thema aufgeteilt: AVATAR_DIR-Konstante im XenForo-Importskript nicht angegeben

Ich wollte nur nachhaken und jedem, der versucht, von Xenforo wegzukommen (und diesen Thread über Google oder was auch immer findet), mitteilen, dass hier ein Importer für die Flarum-Forensoftware getestet wird:

1 „Gefällt mir“

Interessant, aber es wäre noch interessanter, wenn wir einen soliden XenForo-zu-Discourse-Importer hätten.

Der Herr scheint sehr zuversichtlich in dem zu sein, was er tut, und das applaudiere ich!

1 „Gefällt mir“

Ich habe kürzlich einen XenForo-Import durchgeführt. Ich habe einige Änderungen vorgenommen, um einige Funktionen hinzuzufügen, aber ich kann mich jetzt nicht mehr erinnern, welche nicht spezifisch für dieses Forum waren.

Sind diese Anweisungen für Ubuntu 22.04 veraltet?

Nachdem es mir gelungen ist, MYSQL zu installieren, passiert Folgendes:

root@root-app:/# sudo mysql
ERROR 2002 (HY000): Kann keine Verbindung zum lokalen MySQL-Server über den Socket ‘/var/run/mysqld/mysqld.sock’ herstellen (2)