تم التحقق: https://meta.discourse.org/t/images-lost-when-migrating-to-self-hosting/52643، posts:rebake لا يفعل شيئًا جيدًا.
المشكلة
لقد اتبعنا التعليمات الرسمية وأنشأنا مثيلاً لـ Lightsail، ومن هناك قمنا بتنزيل قاعدة بيانات من واجهة مستخدم Discourse وطبقناها للحصول على 80٪ من الطريق. كانت الفكرة هي الانتقال إلى المثيل المستضاف ذاتيًا مع الاحتفاظ بالنسخة السابقة قيد التشغيل.
بمجرد حصولنا على نسخة حية من المنتدى القديم. نبدأ في ترحيل الصور. للقيام بذلك، نقوم أولاً بإلغاء اشتراكنا للحصول على صورنا وترحيلها.
مع تحميل الصور الجديدة إلى المثيل المستضاف ذاتيًا، سنحتاج فقط إلى التحميل من المثيل المستضاف قبل تاريخ الانتقال. هذا يعني أننا لم نستخدم أبدًا تفريغ قاعدة البيانات الذي جاء مع صورنا وإلغائنا؛ نظرًا لأننا قمنا بالفعل بالترحيل، فقد انتهت صلاحيته الآن.
ألاحظ ثلاثة سلوكيات تتعلق بهذه النقطة الزمنية.
- تشير الموارد المشار إليها في النسخ الاحتياطي (تفريغ SQL، على وجه التحديد) إلى البنية التحتية لـ Discourse
- الموارد المشار إليها * التي تم إنشاؤها منذ ذلك الحين في النسخة الاحتياطية، على سبيل المثال صور المنشورات الجديدة، تتم الإشارة إليها بشكل صحيح وتوجد على بنيتنا التحتية
نتيجة لذلك، إذا قمت بإعادة تحميل مورد يقيم بنفس التجزئة، فسيرتبط ببنية Discourse التحتية. على سبيل المثال: محاولة إصلاح الأيقونة عن طريق تحميل نفس الأيقونة لا تعمل. ومع ذلك، يمكنني تحميل أي صورة عشوائية أخرى، وستعمل.
الحالة الحالية
حسب فهمي، فإن upload://<X> يمر عبر فك تشفير b62 (و sha1؟) أجزاء لربطها بالمجلد public/uploads. لدينا كل واحدة من هذه الصور:
يحتوي التفريغ الذي قدمه لنا فريق Discourse على ملف مضغوط مع
default/original/1Xويمكن رؤيته حاليًا في/var/www/discourse/public/uploads/default/original/1X. يحتوي المجلد الأخير الآن على 329 عنصرًا، واحتوى التفريغ المقدم على 249 عنصرًا - هذا يبدو جيدًا بالنسبة لي.
هذا يعني أن البيانات يجب أن تكون قابلة للاكتشاف، حتى لو لم أتمكن من العثور مباشرة على التحميل في المجلد. أنا أتطلع إلى فهم هذه العلاقة، حتى أتمكن بطريقة ما من إصلاح الربط. في البداية، بدا الأمر وكأنه استبدال بسيط للسلسلة، وقد نجح ذلك في بعض الصور. ومع ذلك، تم استبدال بعضها الآن بـ transparent.png، حيث كانت في السابق مجرد صورة غير قابلة للوصول.

