Überprüft: Images lost when migrating to self-hosting, posts:rebake tut nichts Gutes.
Problem
Wir folgten den offiziellen Anweisungen und erstellten eine Lightsail-Instanz. Von dort luden wir eine Datenbank über die Discourse-UI herunter und wendeten sie an, um zu 80 % fertig zu sein. Die Idee war, zur selbst gehosteten Instanz zu wechseln, während die vorherige Variante am Laufen blieb.
Sobald wir eine Live-Kopie des alten Forums hatten, begannen wir mit der Migration der Bilder. Dazu kündigten wir zunächst unser Abonnement, um unsere Bilder zu erhalten und zu migrieren.
Da neue Bilder auf die selbst gehostete Instanz hochgeladen würden, müssten wir nur von der gehosteten Instanz vor dem Übergangsdatum hochladen. Das bedeutet, dass wir nie den Datenbank-Dump verwendet haben, der mit unseren Bildern und der Kündigung geliefert wurde, da wir die Migration bereits durchgeführt hatten und diese nun abgelaufen war.
Ich beobachte drei Verhaltensweisen, die sich auf diesen Zeitpunkt beziehen.
- Referenzierte Ressourcen im Backup (insbesondere SQL-Dump) verweisen auf die Discourse-Infrastruktur.
- Referenzierte Ressourcen*, die seitdem im Backup erstellt wurden, z. B. Bilder neuer Beiträge, sind korrekt referenziert und auf unserer Infrastruktur zu finden.
Folglich, wenn ich eine Ressource neu hochlade, die zum gleichen Hash ausgewertet wird, wird sie auf die Discourse-Infrastruktur verlinken. Zum Beispiel: Der Versuch, das Favicon zu reparieren, indem dasselbe hochgeladen wird, funktioniert nicht. Ich kann jedoch jedes andere zufällige Bild hochladen, und es wird funktionieren.
Aktueller Stand
Soweit ich weiß, durchläuft upload://<X> eine b62-Dekodierung (und SHA1?) von Bits, um sie für den Ordner public/uploads zuzuordnen. Wir haben jedes dieser Bilder:
Der von den Discourse-Team bereitgestellte Dump enthält einen Zip mit
default/original/1Xund dieser ist derzeit unter/var/www/discourse/public/uploads/default/original/1Xzu sehen. Der letztere Ordner enthält jetzt 329 Elemente, der gegebene Dump enthielt 249 Elemente – das klingt für mich gut.
Das bedeutet, dass die Daten auffindbar sein sollten, auch wenn ich den Upload nicht direkt im Ordner finden kann. Ich möchte diese Beziehung verstehen, um die Zuordnung irgendwie reparieren zu können. Anfangs schien es nur eine einfache String-Substitution zu sein, und das funktionierte für einige Bilder. Einige wurden jedoch inzwischen durch ein transparent.png ersetzt, wo vorher nur ein unzugängliches Bild war.

