أوه، هذا بالتأكيد أكثر منطقية
يمكنك التحقق محليًا باستخدام أي عميل SSH تفضله، اعتمادًا على إعداداتك، يجب أن تكون الملفات في مسار مثل /var/discourse/shared/standalone/uploads/default/original/2X/
لذلك قد تحتاج إلى استخدام الأمر ls -R /var/discourse/shared/standalone/uploads/ | grep 4064b للعثور على ملف 4064b…d.png
نتحدث عن نفس مثيل Discourse مثل المستخدم @masterakay هنا.
انتقلنا إلى S3 منذ أكثر من عامين، ولا توجد أي ملفات في مجلد التحميلات المحلي أحدث من عام 2018.
كما أفهم، يتم رفع الصور في مجلد “original”، ثم تتم معالجتها (قصها، تقليل حجمها، إلخ) ووضعها في مجلد “optimized”. الروابط التي يستخدمها Discourse عند رفع الصور لا تزال من مجلد “/original/1X/”. بطريقة ما، ومع التحديث، اختفى مجلد “1X”.
هناك مجلد “default” يحتوي على العديد من التحميلات (صور، إلخ) بالإضافة إلى النسخ المقصوصة. يوجد حوالي 10 آلاف ملف هنا، مما يجعل حجمها حوالي 2.5 جيجابايت.
المشكلة هي أن رابط الصورة في المنشورات يحتوي دائمًا على النسخة “original”.
ما لاحظناه هو أن الملفات المفقودة هي مجموعة فرعية من الملفات الموجودة في مجلد “default”.
التحميلات الجديدة تعمل دون مشاكل ويتم تخزينها في “/original/2X/”.
هل لدى أي شخص أفكار حول أين قد يكون اختفى مجلد “/original/1X/” وهل من الممكن إعادته؟
كيف قمت بإعداد S3؟ هل قمت بتعيين أي قيم في app.yml أم فقط في واجهة المستخدم الإدارية؟ يبدو أن هناك شيئًا غير متوقع لـ DISCOURSE_S3_BUCKET أو DISCOURSE_S3_BACKUP_BUCKET.
صحيح. قد يكون هناك شيء لا يعمل بشكل صحيح في الكود، لكننا لا نعرف ما هو ولا السبب. لذا نحتاج إلى مزيد من المعلومات.
هناك طريقتان مختلفتان لإعداد S3: يمكنك تكوين البيئة في app.yml أو إدخال القيم في واجهة المستخدم الإدارية. تختلف أسماء المتغيرات قليلاً في كل طريقة.
الموضوع الذي ربطت به يصف كيفية الإعداد عبر واجهة المستخدم الإدارية. إذا كانت هذه هي الطريقة التي قمت بها لإعداد موقعك، فهل يمكنك إخبارنا بما لديك في s3_upload_bucket و s3_backup_bucket؟
حدثت المشكلة لأن هذه الإعدادات لا يُفترض أن تكون بنفس القيمة — ابحث في موضوع الإعداد عن السطر “هل أحتاج حقًا إلى استخدام دلاء منفصلة للuploads والنسخ الاحتياطية؟”
تم تشغيل مهمة صيانة على محتويات دلة النسخ الاحتياطي وأثرت على الـ uploads لأن قيمها تداخلت.
@sam يجب أن نفرض ذلك في الكود، وليس فقط في الوثائق.
لإصلاح موقعك، هناك خطوتان:
أولاً، ستحتاج إلى تغيير بادئة النسخ الاحتياطي — إضافة /backups في النهاية كما هو موضح في موضوع الإعداد، يكفي.
بعد ذلك، انقل كل شيء في دلة S3 إلى المكان الصحيح. كل شيء في مجلد “default” العلوي يجب إعادته إلى المستوى العلوي.
على سبيل المثال، هناك على الأرجح مجلد “default/originals” هناك ويجب نقله للأعلى.
ستحتاج إلى استخدام وحدة تحكم AWS على الويب أو أداة أخرى لاستعراض الدلة.
مرحبًا @schleifer، هذا منطقي، وقد أضفت بادئة النسخ الاحتياطي إلى اسم الدلو.
أما فيما يتعلق بالملفات المرفقة الحالية، فجميعها موجودة في /default/ (وليس في مجلدات فرعية). تستخدم روابط الصور في المنشورات (وفي كل مكان آخر) /original/* أو /optimized/*.
إذا قمنا بنقل كل شيء في مجلد الافتراضي مستوىً واحدًا للأعلى (إلى الجذر)، فستكون الصور في /*.
ولا، لا توجد أي مجلدات داخل defaults، بل فقط ملفات مرفقة. يبدو أنها تحتوي على ملفات بأسماء قياسية تتكون من 40 حرفًا كـ hash، بالإضافة إلى بعض الملفات ذات اللاحقات مثل “_2_10x10” (والتي أفترض أنها من الصور المحسّنة).
كيف تقترح حل هذه المشكلة؟ سيستغرق إصلاح جميع المنشورات بروابط جديدة وقتًا. هل من الممكن تجميع الملفات في المجلدات الصحيحة بناءً على اسم الملف هذا؟
تعمل التحميلات الجديدة كما هو متوقع في المجلدات الفرعية، لحسن الحظ. كما أن الروابط في المنشورات تشير إلى الموقع الصحيح.
هناك أكثر من 10 آلاف ملف في /default/. يبدو أن تعديل كل منشور يدويًا عملًا شاقًا. هل توجد طريقة لأتمتة ذلك؟ ربما باستخدام استبدال تعبيرات نمطية في جميع المنشورات؟
نعم، هذا هو الخطة. الخطوة التالية هي وضع جميع ملفات AWOL في موقع معروف. في الدلو، ما هي المجلدات الفرعية الموجودة تحت /original/؟ يجب أن يكون هناك /1X/ وقد تكون هناك مجلدات أخرى.