ملفات الدليل المستهدفة للنسخ الاحتياطي إلى ProtonDrive (بخلاف R2 Media)؟

أنا أستخدم Cloudflare R2 لتحميل الوسائط ولكني أعتقد أنه لا يعمل لعمل نسخة احتياطية من قاعدة البيانات. ما هي أدلة الملفات التي أحتاج إلى عمل نسخة احتياطية منها باستخدام rclone؟

قد تجد الموضوع التالي مفيدًا


ملفات/دليل Discourse للنسخ الاحتياطي إلى ProtonDrive (بخلاف وسائط R2/S3)


الخطوة 1 — ماذا يعني upload://

upload://

تعليق

يخزن Discourse المرجع فقط upload://<hash> في محتوى المنشور (خام/مطهو). عند الخبز أو عند التصيير، يستشير Discourse جداول قاعدة البيانات الخاصة به (مثل uploads و post_uploads وما إلى ذلك) لحل هذه الهاشات إلى عناوين URL أو مسارات فعلية بناءً على مكان تخزين التحميلات (محلي، CDN، S3/R2، إلخ).


الخطوة 2 — أين يهبط ذلك داخل الحاوية

/shared/uploads/default

تعليق

في تثبيت Docker القياسي (باستخدام launcher و app.yml)، يتم ربط /shared داخل الحاوية من /var/discourse/shared/standalone الخاص بالمضيف. كل ما يكتبه Discourse بشكل دائم - بما في ذلك التحميلات والسجلات والنسخ الاحتياطية وما إلى ذلك - يكون تحت /shared.


الخطوة 3 — مسار نظام ملفات المضيف

/var/discourse/shared/standalone/uploads/default

تعليق

إذا كنت لا تستخدم تحميلات خارجية (S3/R2)، فهذا هو المسار الرئيسي الذي يجب مزامنته مع ProtonDrive للاحتفاظ بوسائط المنشورات المحملة. إذا كنت تستخدم S3/R2، فلن تكون معظم التحميلات هنا، ولكن قد تظل بعض الملفات (مثل المتغيرات المحسنة، وشواهد القبور) موجودة. قرر ما إذا كنت تريد عمل نسخة احتياطية من هذا أيضًا.


الخطوة 4 — تعيين حجم حاوية Docker (app.yml)

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
تعليق

كل شيء في /shared داخل الحاوية يصبح /var/discourse/shared/standalone على المضيف. إذا قمت بعمل نسخة احتياطية من هذه الشجرة، فستحصل على التحميلات، وملفات النسخ الاحتياطي المضغوطة، والسجلات، (اختياريًا) بيانات PostgreSQL إذا تم الاحتفاظ بها على القرص (على الرغم من أن ملفات النسخ الاحتياطي المضغوطة كافية بشكل عام للاسترداد).


أهداف ملموسة للنسخ الاحتياطي (مخزن محلي)

الحد الأدنى من المجموعة (إذا كنت تثق في النسخ الاحتياطي المضغوط لـ Discourse):

/var/discourse/shared/standalone/backups/ # النسخ الاحتياطية الكاملة التي تم إنشاؤها بواسطة Discourse (ملفات .tar.gz مضغوطة)
/var/discourse/shared/standalone/uploads/ # فقط إذا كنت تخزن التحميلات محليًا

تعليق
  • يشير النسخ الاحتياطي المضغوط إلى ملف .tar.gz الذي تم إنشاؤه بواسطة ميزة النسخ الاحتياطي لـ Discourse. يحتوي على تفريغ كامل لقاعدة البيانات، وتكوين الموقع، والموضوعات، و (اختياريًا، إذا تم تحديده) جميع التحميلات المحلية. لا يحتوي على وسائط مخزنة على S3/R2 خارجي؛ فقط سجلات قاعدة البيانات التي تشير إليها.
  • إذا كانت تحميلاتك موجودة على S3/R2، فقد تحتاج فقط إلى /backups/ محليًا وعملية منفصلة لعمل نسخة احتياطية من دلو تخزين الكائنات الخاص بك.

مجموعة “كل ما قد أحتاجه على الإطلاق” (نسخ نظام الملفات):

/var/discourse/shared/standalone/backups/ # النسخ الاحتياطية الكاملة لـ Discourse (ملفات مضغوطة)
/var/discourse/shared/standalone/uploads/ # التحميلات/الوسائط المحلية (إذا لم تكن S3/R2)
/var/discourse/shared/standalone/log/rails/ # (اختياري) سجلات Rails - مفيدة للتحقيقات الجنائية
/var/discourse/shared/standalone/tmp/backups/ # (اختياري) منطقة مرحلية مؤقتة للنسخ الاحتياطي (عادة فارغة)
/var/discourse/shared/standalone/postgres_data/ # (اختياري) دليل بيانات PostgreSQL الخام - غير ضروري عادةً
/var/discourse/shared/containers/ # ملف app.yml الخاص بك وأي ملفات YML للحاوية (التكوين)
/etc/letsencrypt/ # (اختياري) شهادات TLS إذا كنت تنهي SSL على المضيف

تعليق
  • بيانات PostgreSQL الخام ليست مطلوبة عادةً لأن النسخ الاحتياطي المضغوط يحتوي على تفريغ منطقي لقاعدة البيانات، وهو أكثر أمانًا للاستعادة.
  • /containers صغير ولكنه حاسم للتعافي من الكوارث - فهو يحتوي على إعداداتك وتعيينات الأحجام.
  • شهادات TLS تهم فقط إذا كنت تقوم بـ SSL خارج الحاوية.

خريطة سريعة بسطر واحد

upload://<hash>

/shared/uploads/default (داخل Docker)
/var/discourse/shared/standalone/uploads/default (على المضيف)

تعليق

إذا كنت تستخدم S3/R2:

  • قم بعمل نسخة احتياطية من دلو S3/R2 الخاص بك بشكل منفصل (على سبيل المثال، باستخدام Rclone).
  • لا تزال تفكر في عمل نسخة احتياطية من /backups/ (ملفات مضغوطة، تتضمن قاعدة البيانات والتكوين، وتحميلات الموقع، ولكن ليس الوسائط الخارجية) و /containers/.

:white_check_mark: ملخص سريع لخيط ProtonDrive

  • تحميلات محلية؟ قم بعمل نسخة احتياطية من:
    • /var/discourse/shared/standalone/uploads/
    • /var/discourse/shared/standalone/backups/ # (يحتوي على نسخ احتياطية مضغوطة كـ .tar.gz)
  • تحميلات S3/R2؟ قم بعمل نسخة احتياطية من:
    • /var/discourse/shared/standalone/backups/ # (نسخ احتياطية مضغوطة: قاعدة البيانات/التكوين/جدول التحميلات)
    • دلو S3/R2 الخاص بك بأداة أخرى
    • اختياريًا: /containers/ و /log/rails/ و postgres_data/ لتغطية كاملة للتعافي من الكوارث
تعليق

النسخ الاحتياطي المضغوط: ملف .tar.gz الذي تم إنشاؤه بواسطة نظام النسخ الاحتياطي لـ Discourse، يحتوي على تفريغ منطقي لقاعدة البيانات والموضوعات والتكوينات، و (اختياريًا) التحميلات المحلية، ولكنه لا يتضمن أبدًا وسائط S3/R2 الخارجية.

أود أن أسلط الضوء على أنه في كل مرة من المرات الثلاث التي قمت فيها بنقل الخادم، بالاعتماد على النسخ الاحتياطي لملفات tarball للحفاظ على التحميلات المحلية، كان ملف app.yml الافتراضي مختلفًا.

لذلك، من الأفضل على الأرجح نسخ أجزاء من ملف app.yml القديم يدويًا لاستبدال أجزاء من الملف الجديد.

أود تجربة docker cp للحصول على ملف نسخة احتياطية من حاوية discourse ونقله إلى النظام المضيف، إذا كان ذلك ضروريًا