> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# البيانات والنسخ الاحتياطية

نحتاج أحيانًا إلى تغيير مخطط البيانات في قاعدة البيانات مع تطوّر Overleaf، وتُستخدم سكربتات الترحيل لأتمتة هذه العملية. وتكون هذه السكربتات قد شُغّلت أولًا على [overleaf.com](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit)، وهي أكبر نسخة من Overleaf في العالم، لذا تكون معظم الاحتمالات قد صودفت بالفعل، ومع ذلك لا نقدّم أي ضمانات بشأن بياناتك. يُرجى التأكد من إنشاء نسخة احتياطية **متسقة** من بياناتك **قبل** ترقية نسختك.

<Info>
  عند الترقية إلى صورة Docker جديدة، ستُنفَّذ تلقائيًا أي عمليات ترحيل **لم** تُشغَّل بعد، وقد يستغرق ذلك بعض الوقت حسب حجم بياناتك، ويمكنك معرفة مدى التقدم بمتابعة السجلات. لمزيد من المعلومات، راجع وثائق [التسجيل (Logging)](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging).
</Info>

### تخزين البيانات

يخزّن كل من Overleaf Community Edition و Server Pro بياناتهما في ثلاثة أماكن منفصلة:

* <strong>قاعدة بيانات MongoDB:</strong> هنا توجد بيانات المستخدمين والمشاريع.
* <strong>Redis:</strong> يعمل كذاكرة تخزين مؤقت عالية الأداء للبيانات قيد المعالجة، ويخزّن بشكل أساسي المعلومات المتعلقة بتعديلات المشاريع والتعاون.
* <strong>نظام ملفات Overleaf:</strong> يخزّن ملفات المشاريع غير القابلة للتحرير (بما في ذلك الصور)، ويعمل أيضًا كذاكرة تخزين مؤقت مؤقتة على القرص أثناء ترجمة المشاريع.

<Info>
  قد يكون ذلك `~/sharelatex_data` أو `~/overleaf_data`، بحسب وقت إعداد نسختك.
</Info>

<Check>
  بالنسبة لملفات المشاريع وبيانات السجل الكامل للمشاريع، ندعم أيضًا واجهات تخزين متوافقة مع S3.
</Check>

راجع قسم المجلدات بالتفصيل لمزيد من المعلومات حول بنية المجلدات على القرص.

### إجراء نسخ احتياطي متسق

هناك ثلاثة مخازن يجب تضمينها عند أخذ نسخة احتياطية متسقة:

* MongoDB
* Redis
* بيانات نظام ملفات Overleaf

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

قبل بدء عملية النسخ الاحتياطي، ستحتاج إلى إيقاف نسختك عن العمل. وبدءًا من Server Pro `3.5.0`، تقوم عملية الإيقاف تلقائيًا بإغلاق الموقع وفصل المستخدمين.

لإيقاف نسختك، ستحتاج إلى تشغيل `bin/docker-compose stop sharelatex` إذا كنت تستخدم نشرًا عبر Toolkit، أو `docker compose stop sharelatex` إذا كنت تستخدم Docker Compose.

بعد إيقاف الحاوية `sharelatex`، يمكنك بدء عملية النسخ الاحتياطي.

بعد اكتمال عملية النسخ الاحتياطي **بنجاح**، ستحتاج إلى تشغيل الحاوية `sharelatex`. للقيام بذلك، شغّل `bin/docker-compose start sharelatex` إذا كنت تستخدم نشرًا عبر Toolkit، أو `docker compose start sharelatex` إذا كنت تستخدم Docker Compose.

<Danger>
  * يجب تخزين النسخ الاحتياطية على خادم منفصل عن الخادم الذي تعمل عليه نسخة Overleaf، ويُفضّل أن يكون في موقع مختلف تمامًا.
  * قد يوفّر نسخ قواعد البيانات على عدة نسخ من MongoDB بعض التكرار، لكنه لا يحمي من تلف البيانات.
  * اختبار نسخك الاحتياطية هو أفضل طريقة للتأكد من أنها كاملة وصالحة للعمل.
</Danger>

### MongoDB

يأتي MongoDB مع أداة سطر أوامر تُسمى [mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/) يمكن استخدامها لإنشاء نسخة احتياطية من بيانات المستخدمين والمشاريع المخزّنة في قاعدة البيانات.

### بيانات نظام ملفات Overleaf

بالنسبة لعمليات النشر عبر Toolkit، يُحدَّد المسار الذي تُخزَّن فيه ملفاتك غير القابلة للتحرير في `config/overleaf.rc` باستخدام متغير البيئة `OVERLEAF_DATA_PATH`، لكن قد يكون `data/sharelatex` بحسب وقت إنشاء نسختك.

يلزم استخدام أداة مثل **rsync** لنسخ هذا المجلد بشكل متكرر لضمان إنشاء نسخة احتياطية كاملة.

### Redis

يخزّن Redis جلسات المستخدمين وتحديثات المستندات المعلّقة قبل نقلها إلى MongoDB.

يُعدّ استمرار Append Only File (AOF) الإعداد الموصى به لاستمرار بيانات Redis.

يكون استمرار AOF مفعّلًا افتراضيًا لمستخدمي Toolkit في التثبيتات **الجديدة**، ويمكن للمستخدمين الحاليين العثور على مزيد من المعلومات حول تفعيل AOF [هنا](/ar/on-premises/configuration/overleaf-toolkit/redis#enabling-append-only-file-persistence).

إذا قررت مواصلة استخدام لقطات RDB إلى جانب استمرار AOF، فيمكنك نسخ ملف RDB إلى موقع آمن كنسخة احتياطية.

### ترحيل البيانات بين الخوادم

في أفضل الأحوال، لا تكون لديك أي بيانات ذات قيمة في النسخة الجديدة بعد. فليست لدينا عملية لدمج بيانات النسخ.

بافتراض أن النسخة الجديدة لا تحتوي على بيانات بعد، فيما يلي بعض الخطوات التي يمكنك اتباعها. بصورة عامة، ننشئ أرشيف tar لوحدات التخزين `mongo` و `redis` و `overleaf`، وننسخه إلى الخادم الجديد، ثم نفك ضغطه هناك.

#### Toolkit

```bash theme={null}
# Gracefully shutdown the old instance
old-server$ bin/stop

# Create the tar-ball
old-server$ tar --create --file backup-old-server.tar config/ data/

# Copy the backup-old-server.tar file from the old-server to the
# new-server using any method that fits

# Gracefully shutdown new instance (if started yet)
new-server$ bin/stop

# Move new data, you can delete it too
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

# Populate config/data dir again
new-server$ tar --extract --file backup-old-server.tar

# Start containers
new-server$ bin/up
```

#### Docker Compose

```bash wrap theme={null}
# Gracefully shutdown the old instance
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

# Create the tar-ball
old-server$ tar --create --file backup-old-server.tar ~/OVERLEAF_data ~/mongo_data ~/redis_data

# Copy the backup-old-server.tar file from the old-server to
# the new-server using any method that fits

# Gracefully shutdown new instance (if started yet)
new-server$ docker stop sharelatex
new-server$ docker stop mongo redis

# Move new data, you can delete it too
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

# Populate data dirs again
new-server$ tar --extract --file backup-old-server.tar

# Start containers
new-server$ docker start mongo redis
new-server$ docker start sharelatex
```

بحسب ملف **docker-compose.yml** لديك، قد تحتاج إلى تعديل مسارات وحدات التخزين `mongo` و `redis` و `overleaf`.

<Info>
  عند التشغيل كمستخدم root (أو باستخدام sudo)، سيحتفظ tar بمالك الملفات ومجموعتها وأذوناتها، وهو أمر بالغ الأهمية عند استعادة النسخة الاحتياطية.
</Info>

### المجلدات بالتفصيل

<Info>
  للمجلدات التالية تلميحات إضافية:

  * (b) تُضمَّن في النسخ الاحتياطية، ويُفضّل ذلك عندما تكون النسخة متوقفة لضمان الاتساق
  * (d) يمكن حذفها
  * (e) ملفات مؤقتة، يمكن حذفها عندما تكون النسخة متوقفة
</Info>

1. `~/mongo_data` (b)
   * مجلد بيانات mongodb
2. `~/redis_data` (b)
   * مجلد بيانات قاعدة redis
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * غير مستخدم في أحدث إصدار، إذ كان يُستخدم سابقًا ملف synctex تنفيذي مخصص (يُستخدم synctex لربط المصدر بين ملفات ‎.tex وملف pdf)
   2. data
      1. cache (e)
         * ذاكرة تخزين مؤقت للملفات الثنائية الخاصة بعمليات الترجمة
      2. compiles (e)
         * هنا تجري ترجمة latex
      3. db.sqlite (d)
         * غير مستخدم في أحدث إصدار، كان يخزّن سابقًا تفاصيل ذاكرة التخزين المؤقت لـ clsi (نُقلت إما إلى خرائط بسيطة في الذاكرة أو أصبحنا نفحص القرص)
      4. db.sqlite-wal (d)
         * غير مستخدم في أحدث إصدار، راجع db.sqlite
      5. output (e)
         * تخزين مخرجات ترجمة latex لتقديمها إلى العميل
      6. template\_files (b)
         * معاينات الصور لنظام القوالب (Server Pro فقط)
      7. user\_files (b)
         * الملفات الثنائية للمشاريع
      8. history (b)
         * ملفات السجل الكامل للمشاريع
   3. tmp
      1. dumpFolder (e)
         * ملفات مؤقتة ناتجة عن معالجة ملفات zip
      2. uploads (e)
         * تخزين مؤقت لعمليات رفع الملفات (رفع ملف ثنائي/مشروع جديد من zip)
      3. projectHistories (e)
         * ملفات مؤقتة لعمليات ترحيل السجل الكامل للمشاريع


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.