طلب تحسين لسكربت استيراد phpBB3

جربت هذا أيضاً:

> root@vps116136-import:/var/www/discourse/config# su discourse -c “bundle exec rake db:drop”
> exec: line 1: “bundle: command not found

عذرًا، كان يجب أن أتوقع هذه الفحوصات.

حاول تشغيل أمر الإسقاط (drop) باستخدام متغير البيئة هذا:

cd /var/discourse
./launcher enter <your-container-name>

su discourse
DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop

هذا الأمر تحديدًا لم ينجح لأنك لم تكن في الدليل الذي يحتوي على ملف Gemfile الخاص بالمشروع، وهو في حالتك: /var/www/discourse.

ملاحظة سريعة: الطريقة الأسهل كانت ستكون امتلاك نسخة احتياطية منذ البدء الأول للمنتدى، بحيث يمكنك استعادتها قبل محاولة الاستيراد مرة أخرى، ولكن بافتراض أنك لم تكن تملك واحدة، فقد انتهى بنا الأمر بهذا المسح الناعم (soft reset).

لا يزال لا يوجد أي تفاعل.

root@vps116136-import:/var/www/discourse# su discourse
discourse@vps116136-import:/var/www/discourse$ DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop
PG::InsufficientPrivilege: ERROR:  must be owner of database discourse
Couldn’t drop database ‘discourse’
rake aborted!
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR:  must be owner of database discourse (ActiveRecord::StatementInvalid)

…

أحاول الآن بصفتي الجذر (root)…

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

لا.

root@vps116136-import:/var/www/discourse# DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop
fatal: detected dubious ownership in repository at ‘/var/www/discourse’
To add an exception for this directory, call:

    git config --global --add safe.directory /var/www/discourse

rake aborted!

انسَ تعليماتي الأولى :smiling_face_with_tear:

  1. استخدم docker cp لنسخ آخر نسخة احتياطية لك خارج الحاوية. توجد النسخ الاحتياطية داخل /shared/backups/default.
  2. احذف المجلد المشترك من دليل التثبيت الخاص بك (المكان الذي تستدعي منه ./launcher): rm -rf /var/discourse/shared
  3. أعد بناء الحاوية باستخدام ./launcher rebuild <container-name>.

يجب أن يفي هذا بالغرض، ولكن كن حذرًا حتى لا تفقد نسختك الاحتياطية. كنت أحاول تجنب اقتراح ذلك حتى لا تحذف نسختك الاحتياطية عن طريق الخطأ، ولكن يبدو أنه المسار الوحيد للمضي قدمًا.

سيستغرق الأمر بعض الوقت. ملف tar.gz حجمه 15 جيجابايت.

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

في الواقع، سيستغرق الأمر…

200

لقد تم إنجاز 0.5 جيجابايت منذ أن بدأت.

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

انتهيت.

تم.

اكتمل. جاهز لتشغيل برنامج الاستيراد النصي، ولكن…

/var/discourse/shared/standalone/import
├── data
├── mysql
└── settings.yml

لقد أتلفت هذا الأمر :backhand_index_pointing_up:، أليس كذلك.

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

نعم.

أفترض أنك أنشأت مجلدًا (volume) لحاوية mysql الخاصة بك داخل المجلد المشترك. إذا كان الأمر كذلك، فمن المؤسف أنك ستحتاج إلى إعادة تشغيل الحاوية واستعادة قاعدة البيانات مرة أخرى.
يمكنك ببساطة نسخ المرفقات.
لا ينبغي أن يكون إعداد ملف settings.yml صعبًا جدًا مرة أخرى.

لست متأكدًا مما يعنيه إعادة تشغيل الحاوية. في المرة الأولى وضعت phpbb_mysql.sql في دليل mysql وفقًا لـ هذه التعليمات. هل هناك المزيد مما يجب القيام به بخلاف ذلك؟

يمكنك ببساطة نسخ المرفقات.

نعم. باستثناء أن ملف tar.gz يبلغ حجمه 15 جيجابايت لأن هناك 45 جيجابايت من البيانات في دليل phpBB /files. كنت أدير لوحتي لمدة 22 عامًا، أتعلم! لذا نعم، سأقوم بنسخها مرة أخرى. ولكن على الأرجح، سيكون ذلك غدًا قبل أن أستأنف هذا الأمر.

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

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

هناك جهود جارية لجعل الأدوات أكثر مرونة ولجعل العملية أقل تكرارًا، ولكن هذا موضوع معقد للغاية.

آمل أن يسير كل شيء على ما يرام في محاولتك غدًا.

أتفق! لكن phpBB لا يسهل تقليل حجم العينة. أنا عالق نوعًا ما بما لدي. ومع ذلك، كانت بيئة اختبار، ولا يوجد شيء لا يمكن استرداده.

شكرًا! سأعود وأخبركم هنا. بالمناسبة، بما أنني أصبحت خبيرًا في docker cp :zany_face:، هل سيكون من الصعب تعديل سكربت روبي لطباعة post_id الخاص بـ phpBB عندما يحدث شيء كهذا؟

8000 / 24451 ( 32.7%) [677 items/min] W, [2026-01-13T02:50:22.466363 #25640] WARN – : Bad date/time value “0000:00:00 00:00:00”: mon out of range
W, [2026-01-13T02:50:22.466500 #25640] WARN – : Bad date/time value “0000:00:00 00:00:00”: mon out of range
W, [2026-01-13T02:50:22.466600 #25640] WARN – : Bad date/time value “0000:00:00 00:00:00”: mon out of range