نقل المواضيع من نسخة Discourse إلى أخرى

هل تحتاج إلى نقل بعض العناصر من مثيل Discourse إلى آخر؟

توجد أداة سطر أوامر لتصدير موضوع أو مجموعة مواضيع أو فئة كاملة، وأداة أخرى لاستيرادها في الطرف الآخر.

تصدير/استيراد الموضوع

  • موضوع واحد أو أكثر وردودهما
  • المستخدمون الذين نشروا في الموضوع

تصدير/استيراد الفئة

  • الفئة وجميع فئاتها الفرعية
  • إعدادات الأمان الخاصة بها
  • المجموعات المخصصة المذكورة في إعدادات الأمان
    • :warning: إذا كانت أي من المجموعات ممكّنة لـ “طلبات العضوية”، فسيؤدي ذلك إلى تعطل. قم بإيقاف تشغيل هذا قبل التصدير
  • جميع المواضيع والمنشورات في الفئة والفئات الفرعية
  • جميع المستخدمين الذين نشروا، وتعيينهم للمجموعات

البدء: تحديد المعرفات (IDs)

أولاً، حدد معرف (=Export=) أو معرفات (=Export=) التي ترغب في تصديرها. ستجد هذا في نهاية عنوان URL المستخدم للوصول إليه.

  • https://meta.discourse.org/t/how-to-contribute-to-discourse/53797

  • https://meta.discourse.org/t/how-to-contribute-to-discourse/53797/12
    (في هذه الحالة، أنت في منتصف موضوع - التقط الرقم الأول)

  • https://meta.discourse.org/c/howto/faq/4

معرف (ID) الفئة أو الموضوع

مواضيع متعددة

يمكنك تحديد أكثر من موضوع واحد عن طريق إضافة معرفات مفصولة بمسافة؛ يعمل هذا في الحقل أعلاه (لا أعتقد أن هذا يعمل للفئات):

  • 53797 200943 124096

تشغيل برنامج التصدير النصي (Export Script)

يمكن تشغيل الأداة كمستخدم جذر (root) داخل الحاوية:

cd /var/discourse
./launcher enter app

قم بتشغيل هذا الأمر:

discourse export_=Export= =ID=

يجب أن يبدو الإخراج شيئًا كهذا:

بدء تصدير =Export=…

من أين يأتي جميع المستخدمين الجدد؟
تم حفظ التصدير في =Export=-export-2021-08-27-015437.json

تم الانتهاء

نقل الملف المُصدَّر

يجب نقل ملف .json المُصدَّر من داخل حاوية التطبيق حيث قمت بالتصدير إلى داخل حاوية المثيل المُستقبِل. يتطلب هذا بضع خطوات.

نسخه إلى “الخارج”

اخرج من الحاوية إذا لم تكن قد فعلت ذلك بالفعل

exit

يجب أن يكون لديك الآن موجه يشبه هذا:

root@yourserver:/var/discourse

استخدم Docker لنسخ الملف من الحاوية (لا أعتقد أنه يمكنك نقله)

docker cp app:/var/www/discourse/=FileName= .

نقله إلى المثيل الآخر

هذا يتجاوز نطاق هذا الدليل، ولكن هذا قد يساعدك في الوصول إلى هناك:

نسخه إلى داخل الحاوية في المثيل المُستقبِل

قم بتسجيل الدخول عبر SSH إلى مثيلك المُستقبِل كمستخدم جذر وانتقل إلى دليل Discourse:

cd /var/discourse

استخدم Docker مرة أخرى لنسخ الملف إلى الحاوية الأخرى

docker cp =FileName= app:/var/www/discourse

استيراد المحتوى

ادخل إلى الحاوية في المثيل المُستقبِل:

./launcher enter app

قم بتشغيل برنامج الاستيراد النصي (import script)

discourse import_=Export= =FileName=

:cake: تم الانتهاء!

قد تحتاج إلى ترتيب بعض الأمور العالقة، ولكن نأمل أن يكون كل شيء قد تم.

نصائح متقدمة

Gem مفقود في Ruby

عند إجراء تصدير فئة معقد، كانت الحاوية الخاصة بي تفتقد Ruby ‘Listen’.
تم حل هذا عن طريق القيام بما يلي: (باستخدام مستخدم Discourse داخل الحاوية)

./launcher enter app
su discourse
bundle config --delete without
bundle config --delete with
bundle install
exit
exit

أدى هذا إلى كسر console الخاص بـ rails، مما استلزم إعادة بناء بعد ذلك

./launcher rebuild app

بيئة متعددة المواقع (Multisite)

في بيئة متعددة المواقع، استخدم متغير البيئة RAILS_DB.

RAILS_DB=xxxmoves discourse export_=Export= =ID=
RAILS_DB=dancerehab discourse import_=Export= =FileName=

يرجى الإبلاغ عن الأخطاء في فئة #bug، وطلب التحسينات في فئة #feature.


مواضيع ذات صلة


آخر مراجعة بواسطة @SaraDev في 2022-07-13T00:00:00Z

44 إعجابًا
UI: Topic and Category Export/Import
CLI command to migrate a single category
Moving topics between sites?
Category/Topic export fails with error "database "discourse_development" does not exist"
Easiest way to export a single topic?
Saving a Conversation
Migrate user custom fields to another instance
How to export user data from a category on a hosted site
Error Importing Categories from a Discourse Instance to Another
Import CSV User Activity from one Discourse to Another
How use API to convert topic in discourse1.com to discourse2.com
Can sub-forums of the same instance split up and move to new independent servers (or discourse instances)?
Help migrating category from one instance to another without admin on the source instance
Adding default sets of topics, categories and users to a new Discourse
How to download Comments and Topics
Downloading Content
Can we combine 2 separate discourse sites?
Tracking and resolving a schema drift cause
Merge two Discourse forums into one
Moving topics from a forum on one website to a forum on another website
Transfer topics between forums?
Forum Aquisition
Transfering inbox group messages to another instance?
Transfering inbox group messages to another instance?
Imported categories are not in parent category
I wonder how to add hundreds of users into a group? Is there any api?
Selective backups skipping settings and config
Test driving admin/moderation features
Add backup to existing Discourse instance
Merging two Discourse forums
Migrating vBulletin onto existing and live Discourse instance
Migrate topics from one discourse instance to another?
A system where people have to start at lesson 1, and cannot see the other lessons?
How to divide my community into 2 parts

سأحاول مرة أخرى.\n\nهل هناك طريقة سهلة لترحيل الملفات المرفوعة ذات الصلة مع المواضيع؟

ليس حقًا. الشيء الذي يعمل في الغالب هو إذا حصلت على كل هذه التحميلات ولصقت عنوان URL الأصلي في أي منشور في الموقع الذي تنتقل إليه، فعندئذ ما يجب أن يحدث هو أن هذه التحميلات سيتم إنشاؤها بنفس SHA وستعمل ببساطة.

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

هممم - ما زلت مرتبكًا بعض الشيء بسبب ذلك. هل تقصد أن هذا سيعمل؟

  1. احصل على جميع ملفات التحميل من الموقع الأول
    • كيف؟
  2. قم بإسقاطها في موضوع واحد
  3. سيتم إنشاء نفس الرابط النسبي الذي كان لديهم في الموقع القديم وسحر!

أم كنت تقصد هذا؟

  1. احصل على جميع عناوين URL المطلقة في فئات اهتمامك من الموقع القديم
  2. الصق هذه في موضوع
  3. سيتم تنزيلها جميعًا إلى الموقع الجديد بنفس التجزئة وستعمل جميع الروابط الموجودة بسحر

أم شيء آخر تمامًا؟

أعتقد أن أيًا من هذين الخيارين يجب أن يعمل. ومع ذلك، يمكنك نقل هذه الصور إلى الموقع الجديد، ويجب أن تُنشئ نفس الـ sha، مما سيجعل الروابط الموجودة في المواضيع تعمل تلقائيًا.

ربما يمكنك فعل شيء مثل:

cat_id=123
Topic.where(category_id: cat_id).each do| t|
  Post.where(topic_id: t.id) do |p|
      p.cooked.match(image url)....
         puts(the match)

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

إنه منتصف الليل. قد تختلف النتائج.

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

مرحباً، لست متأكداً مما إذا كان هذا البرنامج التعليمي هو ما أريد القيام به، ولكني أطرح السؤال هنا.

إذا قمت بتثبيت Discourse على خادم، ولكن بسبب النمو أحتاج إلى الانتقال إلى خادم أقوى، فهل هذه هي الخطوات؟

ماذا يحدث، على سبيل المثال، مع خيار النسخ الاحتياطي؟ ألا يمكنني القيام بذلك، وتثبيت Discourse على خادم آخر ثم استعادة النسخة الاحتياطية من المثيل الآخر من هذا الخيار؟

أنتظر توضيحك، حيث أريد أن أعرف كيفية الترحيل عندما أحتاج إلى ذلك وعدم فقدان العمل الذي كنت أقوم به مؤخرًا.

لا. للانتقال إلى خادم أكبر، فإن النسخ الاحتياطي والاستعادة البسيط هو كل ما هو مطلوب. يمكنك أيضًا نقل موقع Discourse إلى VPS آخر باستخدام rsync