Probleme beim Importieren von Anhängen aus XenForo

Hallo zusammen,

ich habe die XenForo-Datenbank mit 1.500 Mitgliedern und ca. 75.000 Beiträgen erfolgreich auf einen neuen Server mit Discourse migriert.

Eine Frage zu den Anhängen: Laut Skript wird der Import durchgeführt, wenn der Ordner für Anhänge existiert. Meine Frage ist, wo ich die Anhänge vom alten Server ablegen muss:

a) Im Docker-Teil des Servers (irgendwo)
b) Am Ursprungsort /var/discourse/shared/standalone/tmp/attachments

?

1 „Gefällt mir“

Kennt jemand den Pfad???

1 „Gefällt mir“

Sie können die Dateien überall dort ablegen, wo sie von der Maschine, die den Import durchführt, erreichbar sind, und diesen Pfad hier angeben:

  ATTACHMENT_DIR = '/tmp/attachments'

Wenn Sie in einem Docker-Container laufen und die Dateien unter var/discourse/shared/standalone/tmp/attachments ablegen, verwenden Sie für den Pfad /shared/tmp/attachments. Sie können dies überprüfen, indem Sie nach den Dateien suchen, während Sie sich im Container befinden.

2 „Gefällt mir“

Okay Jay, danke für die Informationen. Ich führe diesmal eine saubere Installation durch und richte den Anhang-Ordner ein. Ich werde ihn dann unter /shared/tmp/attachments platzieren und hier mit den Ergebnissen zurückkommen.

Eine kurze Frage noch… gibt es eine Möglichkeit, auch die Passwörter für die Konten zu importieren?

Kann jemand schauen, wo das Problem liegt?

root@my-app:/var/www/discourse# RAILS_ENV=production bundle exec ruby script/import_scripts/xenforo.rb
Lade vorhandene Gruppen...
Lade vorhandene Benutzer...
Lade vorhandene Kategorien...
Lade vorhandene Beiträge...
Lade vorhandene Themen...

erstelle Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 100 bereits importierte Benutzer
Überspringe 4 bereits importierte Benutzer

importiere Kategorien...
       23 / 23 (100,0 %)  [326682 Elemente/Min]
erstelle Themen und Beiträge
       74 / 74752 (  0,1 %)  [99817 Elemente/Min]  Traceback (most recent call last):
        18: from script/import_scripts/xenforo.rb:396:in `\u003cmain\u003e'
        17: from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
        16: from script/import_scripts/xenforo.rb:32:in `execute'
        15: from script/import_scripts/xenforo.rb:174:in `import_posts'
        14: from /var/www/discourse/script/import_scripts/base.rb:869:in `batches'
        13: from /var/www/discourse/script/import_scripts/base.rb:869:in `loop'
        12: from /var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
        11: from script/import_scripts/xenforo.rb:180:in `block in import_posts'
        10: from /var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
         9: from /var/www/discourse/script/import_scripts/base.rb:490:in `each'
         8: from /var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
         7: from script/import_scripts/xenforo.rb:186:in `block (2 levels) in import_posts'
         6: from script/import_scripts/xenforo.rb:315:in `process_xenforo_post'
         5: from script/import_scripts/xenforo.rb:324:in `process_xf_attachments'
         4: from /usr/local/lib/ruby/2.6.0/set.rb:338:in `each'
         3: from /usr/local/lib/ruby/2.6.0/set.rb:338:in `each_key'
         2: from script/import_scripts/xenforo.rb:326:in `block in process_xf_attachments'
         1: from /usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in `squish!'
/usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in `gsub!': kann geänderten String nicht ändern (FrozenError)
root@my-app:/var/www/discourse#

Dieses Mal habe ich die Anhänge hierhin gelegt: var/discourse/shared/standalone/tmp/attachments

Ich habe es gefunden… Das Problem ist, dass ein Ordner mit anzuhängenden Dateien für den Import MUSS innerhalb der Docker-App im Pfad /var/www/discourse/…/tmp/attachments liegen.

Jetzt ist es in Ordnung, das Skript läuft weiter und wird in etwa 1,5 Stunden fertig sein.

Edit: Es scheint, als ob der Import von Anhängen erneut nicht funktioniert… Ich bin aktuell bei 78 % des Imports, und in jedem Beitrag, in dem wir ein Bild oder einen Anhang hatten, steht weiterhin [ATTACH]9788[/ATTACH], und die Nummer zwischen den Tags entspricht der Anzahl der hochgeladenen Dateien, sodass die nächste [ATTACH]9789[/ATTACH] ist…

Jede Hilfe dazu wäre willkommen :confused:

1 „Gefällt mir“

Wenn Sie Beiträge importiert haben, bevor Sie das attachment_dir ordnungsgemäß eingerichtet haben, müssen Sie alle Beiträge löschen und den Importvorgang erneut starten.

Leider ist der Import gerade abgeschlossen, und ich sehe im Log keine Informationen zu den Anhängen?

Wenn du das Import-Skript ausgeführt hast und das Verzeichnis für Anhänge nicht existierte, wurden die Anhänge übersprungen.

Das habe ich nicht gemacht… Ich habe einen frischen Import mit angehängten Dateien durchgeführt.

Ich glaube nicht, dass ich Ihnen hier weiterhelfen kann. Wenn Sie ein Budget haben, schauen Sie bitte auf Redirecting… nach.

Hier ist mein letzter Rat: Ich bin ziemlich sicher, dass die Anhänge nicht dort liegen, wo das Skript sie finden kann, und dass Sie alles löschen und von vorne beginnen müssen.

Bevor Sie das Skript erneut ausführen, sollten Sie im Ordner folgenden Befehl eingeben:

 ls /tmp/attachments

Dabei ist /tmp/attachments der Pfad, den Sie in der Zeile

  ATTACHMENT_DIR = '/tmp/attachments'

angegeben haben. Wenn die Anhänge nicht aufgelistet werden, müssen Sie weiterhin herausfinden, wo sie sich befinden.

2 „Gefällt mir“

Könntest du mir bitte genau sagen, wohin ich die Anhänge von XenForo auf den neuen Server legen muss, damit das Skript sie definitiv findet?

Jemand?

Ich mache gerade einen frischen Import (das 5. Mal)… Ich bin müde… :roll_eyes:

Muss ich die Anhänge von Xenforo in einer bestimmten Reihenfolge sortieren oder einfach nur die Struktur und /tmp/attachments kopieren/einfügen?

Ich führe derzeit die Installation auf einer neuen VM mit einem Snapshot durch, damit ich die Details schnell ändern und mit der Migration von vorne beginnen kann.

Gestern habe ich den Anhang-Ordner von Xenforo, der eine Struktur wie folgt hat: einen Hauptordner mit dem Namen „attachments" und darin 9 Unterordner mit den Namen von 0 bis 9. In jedem dieser Ordner befinden sich etwa 600–700 Anhänge (.jpg). Ich habe den Ordner in var/discourse/shared/standalone/tmp/attachments gelegt und das Skript xenforo.rb angepasst, indem ich folgendes eingefügt habe:

ATTACHMENT_DIR = '/shared/tmp/attachments'

Ich habe es mit „ls /tmp/attachments" getestet und die richtige Struktur erhalten, aber ich stoße auf denselben Fehler wie beim ersten Mal:

creating topics and posts
74 / 74752 ( 0.1%) [99817 items/min] Traceback (most recent call last):
18: from script/import_scripts/xenforo.rb:396:in \u003cmain\u003e' 17: from /var/www/discourse/script/import_scripts/base.rb:47:in perform’
16: from script/import_scripts/xenforo.rb:32:in execute' 15: from script/import_scripts/xenforo.rb:174:in import_posts’
14: from /var/www/discourse/script/import_scripts/base.rb:869:in batches' 13: from /var/www/discourse/script/import_scripts/base.rb:869:in loop’
12: from /var/www/discourse/script/import_scripts/base.rb:870:in block in batches' 11: from script/import_scripts/xenforo.rb:180:in block in import_posts’
10: from /var/www/discourse/script/import_scripts/base.rb:490:in create_posts' 9: from /var/www/discourse/script/import_scripts/base.rb:490:in each’
8: from /var/www/discourse/script/import_scripts/base.rb:491:in block in create_posts' 7: from script/import_scripts/xenforo.rb:186:in block (2 levels) in import_posts’
6: from script/import_scripts/xenforo.rb:315:in process_xenforo_post' 5: from script/import_scripts/xenforo.rb:324:in process_xf_attachments’
4: from /usr/local/lib/ruby/2.6.0/set.rb:338:in each' 3: from /usr/local/lib/ruby/2.6.0/set.rb:338:in each_key’
2: from script/import_scripts/xenforo.rb:326:in block in process_xf_attachments' 1: from /usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in squish!’
/usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in gsub!': can't modify frozen String (FrozenError) root@my-app:/var/www/discourse#Preformatted text`

2019-11-15T23:00:00Z

Ich habe das ! aus der gsub!-Zeile an folgender Stelle entfernt:

/usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb

Jetzt stoppt das Import-Skript nicht mehr, sondern setzt fort und zeigt diese Informationen über die Anhänge an:

Wie auch immer, zum Beispiel der letzte Eintrag:

Could not find file /shared/tmp/attachments//2/2485-c3da9f6ee1e33d3ebf418c5dea1f9e8a.data. Skipping attachment id 2485

…die Datei befindet sich tatsächlich an diesem Pfad, aber es gibt keine .data. Stattdessen liegt dort eine .JPG.

Jede Hilfe ist willkommen.

2019-11-15T23:00:00Z

Das Skript hatte einen Fehler, den ich gefunden und behoben habe. Jetzt kann ich die Anhänge erfolgreich importieren.

1 „Gefällt mir“