مشاكل أثناء استيراد المرفقات من XenForo

مرحبًا يا رفاق،

لقد نجحت في ترحيل قاعدة بيانات Xenforo التي تحتوي على 1500 عضو وحوالي 75,000 منشور إلى خادم جديد يعمل بنظام Discourse.

لدي سؤال بخصوص المرفقات… من خلال السكربت، أرى أنه إذا كانت مجلد المرفقات موجودًا، فسيقوم السكربت باستيرادها. سؤالي هو: أين يجب أن أضع المرفقات من الخادم القديم؟

أ) في جزء Docker من الخادم (في مكان ما)
ب) في الموقع الأصلي /var/discourse/shared/standalone/tmp/attachments

؟

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

هل يعرف أحد المسار؟؟؟؟

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

ضع الملفات في أي مكان تريده يكون متاحًا من الجهاز الذي يقوم بالاستيراد، ثم ضع المسار هنا:

  ATTACHMENT_DIR = '/tmp/attachments'

إذا كنت تعمل داخل حاوية Docker، وقمت بوضع الملفات تحت var/discourse/shared/standalone/tmp/attachments، فاستخدم /shared/tmp/attachments كمسار. يمكنك التحقق من ذلك بالبحث عن الملفات أثناء وجودك داخل الحاوية.

إعجابَين (2)

حسنًا، جاي، شكرًا لك على المعلومات. سأقوم هذه المرة بتنظيف التثبيت مع إعداد مجلد المرفقات، وسأضعها في /shared/tmp/attachments ثم أعود هنا بنتائج.

سؤال سريع… هل توجد أي طريقة لاستيراد كلمة المرور للحسابات أيضًا؟

هل يمكن لأحد أن ينظر أين المشكلة؟

root@my-app:/var/www/discourse# RAILS_ENV=production bundle exec ruby script/import_scripts/xenforo.rb
جاري تحميل المجموعات الموجودة...
جاري تحميل المستخدمين الموجودين...
جاري تحميل التصنيفات الموجودة...
جاري تحميل المنشورات الموجودة...
جاري تحميل المواضيع الموجودة...

جاري إنشاء المستخدمين
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 100 مستخدم تم استيراده مسبقًا
تخطي 4 مستخدمين تم استيرادهم مسبقًا

جاري استيراد التصنيفات...
       23 / 23 (100.0%)  [326682 عنصر/دقيقة]
جاري إنشاء المواضيع والمنشورات
       74 / 74752 (  0.1%)  [99817 عنصر/دقيقة]  تتبع الأثر (أحدث استدعاءات): 
        18: من script/import_scripts/xenforo.rb:396:in `<main>'
        17: من /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
        16: من script/import_scripts/xenforo.rb:32:in `execute'
        15: من script/import_scripts/xenforo.rb:174:in `import_posts'
        14: من /var/www/discourse/script/import_scripts/base.rb:869:in `batches'
        13: من /var/www/discourse/script/import_scripts/base.rb:869:in `loop'
        12: من /var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
        11: من script/import_scripts/xenforo.rb:180:in `block in import_posts'
        10: من /var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
         9: من /var/www/discourse/script/import_scripts/base.rb:490:in `each'
         8: من /var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
         7: من script/import_scripts/xenforo.rb:186:in `block (2 levels) in import_posts'
         6: من script/import_scripts/xenforo.rb:315:in `process_xenforo_post'
         5: من script/import_scripts/xenforo.rb:324:in `process_xf_attachments'
         4: من /usr/local/lib/ruby/2.6.0/set.rb:338:in `each'
         3: من /usr/local/lib/ruby/2.6.0/set.rb:338:in `each_key'
         2: من script/import_scripts/xenforo.rb:326:in `block in process_xf_attachments'
         1: من /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!': لا يمكن تعديل السلسلة المجمدة (FrozenError)
root@my-app:/var/www/discourse#

لقد وضعت المرفقات هذه المرة في: var/discourse/shared/standalone/tmp/attachments

لقد عثرت عليه… المشكلة هي أن المجلد الذي يحتوي على المرفقات للاستيراد يجب أن يكون داخل تطبيق Docker في المسار /var/www/discourse/…/tmp/attachments

الآن الأمور على ما يرام، يستمر السكربت وسيستغرق حوالي 1.5 ساعة لإكماله

تعديل: يبدو أن استيراد المرفقات لا يعمل مرة أخرى… أنا حاليًا عند 78% من عملية الاستيراد، وفي كل منشور كان يحتوي على صورة أو مرفقات، يظهر [ATTACH]9788[/ATTACH]، حيث يتزايد الرقم بين الوسوم مع كل مرفق تم رفعه، بحيث يكون التالي [ATTACH]9789[/ATTACH]…

أي مساعدة في هذا الأمر ستكون موضع ترحيب :confused:

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

إذا قمت باستيراد أي منشورات قبل إعداد مجلد المرفقات (attachment_dir) بشكل صحيح، فستحتاج إلى حذف جميع المنشورات والبدء في عملية الاستيراد من جديد.

للأسف، تم الانتهاء من الاستيراد الآن، ولا أرى أي معلومات في السجل تتعلق بالمرفقات؟

إذا قمت بتشغيل سكريبت الاستيراد ولم يكن دليل المرفقات موجودًا، فسيتم تخطي المرفقات.

لم أقم بذلك… لقد قمت باستيراد جديد مع المرفقات في مكانها.

لا أعتقد أنني أستطيع مساعدتك هنا. إذا كان لديك ميزانية، يرجى الاطلاع على Redirecting…

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

قبل تشغيل السكريبت مرة أخرى، من داخل المجلد، يجب أن تكتب

 ls /tmp/attachments

حيث /tmp/attachments هو أي شيء وضعته في السطر

  ATTACHMENT_DIR = '/tmp/attachments'

. إذا لم تُدرج المرفقات، فستحتاج إلى مواصلة المحاولة لمعرفة مكان وجودها.

إعجابَين (2)

حسنًا، هل يمكنك إخباري بالضبط أين أضع المرفقات من Xenforo على الخادم الجديد حتى أتأكد من أن السكربت سيجدها؟

هل هناك أحد؟

أقوم الآن باستيراد جديد (للمرة الخامسة)… أنا متعب جدًا… :roll_eyes:

هل أحتاج إلى ترتيب المرفقات من Xenforo بترتيب معين، أم يكفي فقط نسخ/لصق الهيكل ومجلد /tmp/attachments؟

أقوم الآن بالتثبيت على آلة افتراضية جديدة مع لقطة شاشة حتى أتمكن من تغيير التفاصيل بسرعة والبدء من جديد مع عملية الهجرة.

أمس، وضعت مجلد المرفقات من Xenforo الذي يحتوي على هيكل كالتالي: مجلد رئيسي باسم attachments وبداخله 9 مجلدات فرعية بأسماء من 0 إلى 9، وبداخل كل منها حوالي 600-700 مرفق (.jpg). قمت بوضع المجلد في var/discourse/shared/standalone/tmp/attachments وقمت بتعديل سكريبت xenforo.rb وأضفت الكود التالي:

ATTACHMENT_DIR = '/shared/tmp/attachments'

اختبرت الأمر باستخدام “ls /tmp/attachments” وحصلت على الهيكل الصحيح، لكنني واجهت نفس الخطأ كما في المرة الأولى:

إنشاء المواضيع والمنشورات
74 / 74752 ( 0.1%) [99817 عنصر/دقيقة] تتبع الأثر (آخر استدعاء):
18: من script/import_scripts/xenforo.rb:396:in <main>' 17: من /var/www/discourse/script/import_scripts/base.rb:47:in perform’
16: من script/import_scripts/xenforo.rb:32:in execute' 15: من script/import_scripts/xenforo.rb:174:in import_posts’
14: من /var/www/discourse/script/import_scripts/base.rb:869:in batches' 13: من /var/www/discourse/script/import_scripts/base.rb:869:in loop’
12: من /var/www/discourse/script/import_scripts/base.rb:870:in block in batches' 11: من script/import_scripts/xenforo.rb:180:in block in import_posts’
10: من /var/www/discourse/script/import_scripts/base.rb:490:in create_posts' 9: من /var/www/discourse/script/import_scripts/base.rb:490:in each’
8: من /var/www/discourse/script/import_scripts/base.rb:491:in block in create_posts' 7: من script/import_scripts/xenforo.rb:186:in block (2 levels) in import_posts’
6: من script/import_scripts/xenforo.rb:315:in process_xenforo_post' 5: من script/import_scripts/xenforo.rb:324:in process_xf_attachments’
4: من /usr/local/lib/ruby/2.6.0/set.rb:338:in each' 3: من /usr/local/lib/ruby/2.6.0/set.rb:338:in each_key’
2: من script/import_scripts/xenforo.rb:326:in block in process_xf_attachments' 1: من /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!': لا يمكن تعديل السلسلة المجمدة (FrozenError) root@my-app:/var/www/discourse#نص منسّق`

2019-11-15T23:00:00Z

أزلت ! من سلسلة gsub! في الموقع:

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

الآن، لا يتوقف سكريبت الاستيراد ويستمر ويعرض هذه المعلومات حول المرفقات:

على أي حال، على سبيل المثال، السلسلة الأخيرة:

لم يتم العثور على الملف /shared/tmp/attachments//2/2485-c3da9f6ee1e33d3ebf418c5dea1f9e8a.data. تخطي المرفق رقم 2485

…الملف موجود بالفعل في هذا المسار، لكنه لا يحتوي على امتداد .data. بدلاً من ذلك، يوجد امتداد .JPG.

أي مساعدة مرحب بها.

2019-11-15T23:00:00Z

كان هناك خطأ في السكريبت، وقد وجدته وأصلحته. الآن تمكنت من استيراد المرفقات بنجاح.

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