Vielen Dank für die Bereitstellung dieser Anleitung und des Import-Skripts! Ich habe es erfolgreich mit einer Google-Gruppe unter Verwendung von Google Takeout verwendet. Ich habe einfach die .mbox-Datei in das richtige Verzeichnis gelegt und das Skript ausgeführt.
Ich hatte eine Frage zum Import von E-Mails, die Eltern haben, die nicht in der .mbox enthalten sind. Zum Beispiel gibt es in unserer Gruppe viele Threads, die aus einer Weiterleitung einer E-Mail stammen, die nicht an die Gruppe gesendet wurde, oder indem die Gruppe mitten in einer Konversation zur Antwortliste hinzugefügt wurde, um sie einzubeziehen.
Derzeit scheint es beim Importieren so zu sein, als ob diese früheren E-Mails nicht vorhanden sind. Sie können sie finden, wenn Sie auf das E-Mail-Symbol klicken und die HTML-Datei anzeigen. Ich war neugierig, ob andere auf dieselbe Situation gestoßen sind und Lösungen dafür hatten. Ich könnte mir vorstellen, entweder die vorherige E-Mail-Kette in den Beitrag aufzunehmen oder zu versuchen, sie zu parsen und eine Reihe von Nachrichten daraus zu extrahieren und all diese hinzuzufügen.
Sie müssten einen Weg finden, diese Nachrichten aus dem zitierten Text zu generieren und sie (wahrscheinlich mit Id-Headern) zur mbox-Datei hinzuzufügen, bevor Sie das Importskript ausführen.
Das ist wirklich ausgezeichnet. Aber ich habe einige Probleme mit E-Mails, die in Discourse eingehen, mit einer anfänglichen E-Mail und dann den Antworten im mbox-Format im selben Beitrag, nicht formatiert. Ich bin mir nicht sicher, was dies verursacht.
Die Frage ist, wie kann ich alle importierten E-Mails (20 Jahre lang) löschen, ohne die Ziel-Discourse-Instanz zu löschen und neu zu erstellen?
Mir ist bewusst, dass die empfohlene RAM-Anforderung 8 GB beträgt. Ich habe versucht, 20 Jahre an Beiträgen auf einer 2-GB-VM zu importieren, und sie lief eine Weile und stürzte mit der Meldung „killed“ ab. 8-GB-Maschinen bei Anbietern wie DigitalOcean sind (für mich) teuer. Gibt es eine Möglichkeit, dies mit weniger Arbeitsspeicher zu tun? Vielleicht in kleineren Stapeln importieren?
Vielleicht die Kategorien löschen und dann die zugehörigen benutzerdefinierten Themenfelder löschen.
Nein, ich glaube nicht, dass man auf einer kleinen Maschine viel importieren kann. Man könnte es auf einem Desktop versuchen, aber dann hat man Bandbreitenprobleme, um die Datenbank wieder ins Internet zu bekommen.
Ich weiß, dass in diesem Thread nicht viel los ist, aber es gelingt mir nicht, ihn richtig zum Laufen zu bringen. Viele der E-Mails im mbox-Format, die ich importiere, werden nicht richtig aufgeteilt. Die Von-Zeilen sehen so aus:
From MAILER-DAEMON Tue Nov 01 05:57:09 2022
Aber einige Nachrichten werden korrekt importiert, haben dann aber im selben Text rohe mbox-Format-Elemente, die mit der typischen Von-Zeile beginnen. Mit anderen Worten, sie werden nicht aufgeteilt. Ich sehe nicht, dass ich den Regex ändern muss, der die Aufteilung vornimmt, und ich kenne Ruby nicht, daher kann ich das Importskript nicht debuggen.
Ich weiß nicht, wie ich hier weitermachen soll. Es gibt 20 Jahre an Nachrichten zu importieren, daher kann ich die importierten Nachrichten nicht manuell durchgehen, um sie zu korrigieren. Kurz gesagt, dieses Skript funktioniert für mich nicht. Warum sollte ich der Einzige sein, dem das passiert?
Das passiert nicht nur dir. Mein erster bezahlter Discourse-Job bestand darin, monatelang alte mbox-Dateien zu bereinigen, die aus irgendeinem Grund, den ich nicht mehr in Erinnerung habe, von Hand bearbeitet worden waren.
Es klingt, als ob du dich mit dem Regex beschäftigen musst oder eine andere Möglichkeit finden musst, die fehlerhaften Nachrichten zu beheben. Eine Möglichkeit ist, ein anderes Werkzeug zu verwenden, um die Nachrichten in einzelne Dateien aufzuteilen.
Fwiw, ich habe mehrere Import-Skripte geschrieben, bevor ich Ruby kannte.
Jeder Import ist einzigartig. Bei 20 Jahren Daten ist es gut möglich, dass du auf verschiedene Probleme stößt, da sich die verschiedenen verwendeten Systeme im Laufe der Zeit geändert haben.
Ich möchte 20 Jahre Nachrichten aus meinem Mailman2-System in ein Archivverzeichnis importieren, aber ich möchte keine Benutzer-IDs (nicht einmal gestellte) dafür erstellen, da viele unserer Abonnenten weggezogen oder verstorben sind und dies viele Konten erstellen würde, die nur Platz beanspruchen würden.
Kann ich sie alle unter derselben Benutzer-ID (vielleicht ‘archive’) importieren?
Und das mag eine dumme Frage sein, aber da die Anwendung während des Importvorgangs ausgeschaltet ist, bedeutet dies, dass Benutzer, die sich für E-Mails über neue Beiträge angemeldet haben, nicht mit E-Mails über alle gerade geladenen Archive überflutet werden?
Sie können die Funktion import_users auskommentieren und alle Nachrichten werden dem System zugeordnet.
Sie werden nicht viel Speicherplatz sparen.
Keine Benutzer erhalten E-Mails, bis sie den Prozess „Passwort vergessen“ verwendet haben, um sich in ihr Konto einzuloggen. Wenn Sie diese Daten in eine bestehende Community importieren, dann erhalten die Benutzer Benachrichtigungen über die neuen Nachrichten, die durch das Importskript erstellt werden.
Danke, ich habe mir das Importskript angesehen und festgestellt, dass ich den Abschnitt für neue Benutzer möglicherweise einfach deaktivieren kann. Das Testen steht auf meiner Liste.
Es geht nicht um Speicherplatz, sondern darum, möglicherweise Hunderte von vorbereiteten Benutzerkonten zu haben, die nie verwendet werden, also ist es eher ein Kopfplatz oder eine sehr lange Benutzerliste.
Sie kennen Ihre Nutzer, aber es scheint viel besser zu sein, Konten zu haben, die niemand nutzen wird, als nicht zu wissen, wer 20 Jahre lang Nachrichten gepostet hat.
Ich kann die Datei import_mbox.sh nicht finden und wenn ich versuche, das Skript mbox.rb direkt auszuführen, erhalte ich eine Reihe von Ruby-Fehlern:
root@lists-import:/var/www/discourse/script/import_scripts# ruby mbox.rb mbox
fatal: detected dubious ownership in repository at ‘/var/www/discourse’
To add an exception for this directory, call:
Hallo Leute. Was für eine tolle Anleitung. Vielen Dank an Gerhard und andere für ihre Beiträge.
Hat jemand dies für Lyris angepasst? Ich bin daran interessiert, eine historische Installation zu migrieren und möchte verstehen, ob sie bei einem ähnlichen Projekt besondere Bedenken hatten.
Um genauer zu sein, habe ich den Code erfolgreich geändert, was den Import ermöglichte, indem .dup in Zeile 447 der Datei /var/www/discourse/script/import_scripts/base.rb hinzugefügt wurde:
params[:name].dup.strip!
Eine Sache ist unklar: Wie kann ich in eine der Multisite-Seiten importieren?
Hat jemand einen "can’t modify frozen String"-Fehler erhalten? Meine index.db wird zwar erstellt, aber beim Erstellen von Kategorien schlägt es fehl.
root@xxxxxxxxxx:/var/www/discourse# import_mbox.sh
Die mbox-Importierung wird gestartet...
Lade vorhandene Gruppen...
Lade vorhandene Benutzer...
Lade vorhandene Kategorien...
Lade vorhandene Beiträge...
Lade vorhandene Themen...
Index wird erstellt
Indiziere Dateien in /shared/import/data/xxxxx-xxxxxxx@xxxxxxx.com
Indiziere /shared/import/data/xxxxx-xxxxxxx@xxxxxxx.com/export.mbox
Indiziere Antworten und Benutzer
Erstelle Kategorien
/var/www/discourse/script/import_scripts/base.rb:447:in `strip!': **can't modify frozen String: \"xxxxx-xxxxxxx@xxxxxxx.com\" (****FrozenError****)**
from /var/www/discourse/script/import_scripts/base.rb:447:in `block in create_categories'
from /var/www/discourse/script/import_scripts/base.rb:438:in `each'
from /var/www/discourse/script/import_scripts/base.rb:438:in `create_categories'
from /var/www/discourse/script/import_scripts/mbox/importer.rb:50:in `import_categories'
from /var/www/discourse/script/import_scripts/mbox/importer.rb:34:in `execute'
from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
from script/import_scripts/mbox.rb:13:in `<module:Mbox>'
from script/import_scripts/mbox.rb:11:in `<module:ImportScripts>'
from script/import_scripts/mbox.rb:10:in `<main>'