إصلاح أو تنظيف الروابط والأصول المعطلة بعد الاستعادة

لقد تعطل خادمنا واضطررنا إلى إنشاء خادم جديد واستعادته من نسخة احتياطية. لقد كانت عملية مؤلمة، تفاصيل حول ما حدث وكيف قمنا بالاستعادة هنا.

الآن بعد الاستعادة (كان المفتاح هو تعطيل تحميلات S3)، فإن جميع الروابط للمرفقات في المشاركات معطلة (خطأ 404). لقد بحثت في المنتدى ولم أجد حلاً وآمل أن يشيرني شخص ما في الاتجاه الصحيح.

لدي خياران:

  1. هل يمكنني إصلاح هذه الروابط short-url المعطلة التي تشير إلى المرفقات المضمنة في المشاركات (جميع الروابط المعطلة هي للمرفقات في المشاركات؛ الصور المضمنة تُعرض بشكل جيد، والروابط الداخلية الأخرى تعمل بشكل جيد)؟

على سبيل المثال، يظهر رابط المرفق في مشاركة على المنتدى على النحو التالي: https://XYZ.com/uploads/short-url/phu1HOLvkE8LWpkKYfnMPSWsvHh.zip. هذا ما أراه في السجلات عند النقر على رابط مرفق في مشاركة (مما يؤدي إلى 404).

رسالة (تم الإبلاغ عن 5 نسخ)

فشل في معالجة الاستجابة المختطفة بشكل صحيح: Errno::ENOENT : لا يوجد مثل هذا الملف أو الدليل @ rb_sysopen - /XXXXX.s3.dualstack.us-east-1.amazonaws.com/optimized/1X/46728e07f9819907d1b18387bf02ea7fc25c7981_2_32x32.ico

تتبع الأخطاء

/var/www/discourse/app/controllers/static_controller.rb:160:in read' /var/www/discourse/app/controllers/static_controller.rb:160:in block (2 levels) in favicon’
/var/www/discourse/lib/distributed_memoizer.rb:16:in block in memoize' /var/www/discourse/lib/distributed_mutex.rb:33:in block in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:29:in synchronize' /var/www/discourse/lib/distributed_mutex.rb:29:in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:14:in synchronize' /var/www/discourse/lib/distributed_memoizer.rb:12:in memoize’
/var/www/discourse/app/controllers/static_controller.rb:138:in block in favicon' /var/www/discourse/lib/hijack.rb:56:in instance_eval’

آمل حقًا أن تكون هناك طريقة لإصلاح روابط short-url هذه بعد تعطيل خيار تحميل S3 أثناء استعادة الخادم من نسخة احتياطية. لم يؤدِ إعادة خبز المشاركات إلى إصلاحها.

  1. إذا كان هذا الطريق مسدودًا لسبب ما ولا يمكن إصلاحه بشكل جماعي، الآن لدي آلاف المرفقات اليتيمة على سحابة S3، هل هناك طريقة لتنظيفها وتحرير المساحة؟ هل هناك طريقة يمكن لـ Discourse من خلالها المرور عبر سلة تحميل S3 الخاصة بها ومسح جميع الأصول اليتيمة؟

قد يكون من الممكن، أو كان من الممكن، معرفة كيفية إصلاح تلك الروابط، لكن معرفة كيفية القيام بذلك يتجاوز نطاق ما هو ممكن في منتدى.

Upload.sha1_from_short_url('phu1HOLvkE8LWpkKYfnMPSWsvHh.zip')
=> "b13050bdcd2d58924ba6ab3e7608b16bfc3cd1b7"

تحقق مما إذا كان لديك ملف يسمى b13050bdcd2d58924ba6ab3e7608b16bfc3cd1b7.zip في مكان ما في ملفات التحميل الخاصة بك و/أو في دلو S3 الخاص بك. إذا كان الأمر كذلك، فيجب أن يكون من الممكن، وإن لم يكن سهلاً، إصلاح الأمور.

نظرًا لأنك لم تقم بتضمين أسماء المنتديات أو الدلاء الفعلية، فلا يمكننا معرفة ذلك هنا.

إعجاب واحد (1)

نعم، لقد وجدتها تحت:

original/2X/b/b13050bdcd2d58924ba6ab3e7608b16bfc3cd1b7.zip

يسعدني أن أرسل لك الروابط/التفاصيل عبر الرسائل الخاصة

المضحك جداً هو أن المرفقات فقط (مثل الملفات) معطلة. أي صور مضمنة تظهر بشكل جيد.

إذًا كل شيء موجود، ما عليك سوى إعادة كتابة المشاركات بطريقة ما. لست متأكدًا من سبب عدم عملها، ولكن الملفات موجودة.

هل هناك طريقة لتشغيل هذا بشكل جماعي من وحدة التحكم أو واجهة المستخدم أو “تنزيل” هذه الملفات من S3 إلى الجهاز المحلي؟

أعتقد ذلك، ولكن أعتقد أن شخصًا على دراية بـ discourse و rails سيحتاج إلى كتابتها. لست على علم بوجود حل لمشكلتك. هناك عدد قليل من المواضيع حول الانتقال بين S3 buckets قد تقدم بعض الأدلة، لكنني لا أعتقد أن مشكلتك المحددة قد تم حلها من قبل.

بعد الاستعادة، كان يجب عليك إعادة تمكين خيار تحميل S3. يبدو أنك لم تفعل ذلك؟

إعجابَين (2)

ومن الصعب القيام بذلك نظرًا لأنه تم تعيينه في ملف app.yml الذي قد يقوم بذلك.

هل سيؤدي ذلك إلى حل المشكلة؟ أتساءل فقط ما إذا كان من الآمن تجربتها.

حسنًا، نعم، هذا ما أوصيتك بفعله في المقام الأول…
إذا لم تقم بإعادة تمكين تحميلات S3، فستبحث وظيفة short-url عن تلك التحميلات محليًا، ولكنها موجودة على S3.

إعجابَين (2)

سأجرب ذلك ولكن من ناحية أخرى عندما قمت بتمكينه فقد أفسد الاستعادة (انظر موضوعي الآخر). بمساعدة جاي، اضطررت إلى معرفة كيفية تعطيل التحميل لاستعادته في النهاية. هل تمكنت من استعادة خادم بنجاح مع تمكين الخيار؟

تحتاج إلى

  • تعطيل الإعداد
  • استعادة
  • تمكين الإعداد

كما وصفت في تبادل الرسائل الخاصة بنا الأسبوع الماضي

إعجابَين (2)