> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/on-premises/ar/alsyanh/data-and-backups.md).

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

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

{% hint style="info" %}
عند الترقية إلى صورة Docker جديدة، فإن أي عمليات ترحيل قد **لا** لم يتم تشغيلها بعد ستُنفَّذ تلقائيًا، وقد يستغرق ذلك بعض الوقت اعتمادًا على حجم مجموعة بياناتك، كما أن متابعة السجلات ستُظهر لك التقدم. لمزيد من المعلومات، راجع [التسجيل](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging) الوثائق.
{% endhint %}

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

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

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

{% hint style="info" %}
قد يكون هذا `~/sharelatex_data` أو `~/overleaf_data`، وذلك حسب وقت إعداد نسختك.
{% endhint %}

{% hint style="success" %}
وبالنسبة لملفات المشاريع وبيانات سجل المشروع الكامل، فإننا ندعم أيضًا مخازن تخزين متوافقة مع S3.
{% endhint %}

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

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

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

* 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.

{% hint style="danger" %}

* يجب تخزين النسخ الاحتياطية على خادم منفصل عن الخادم الذي تعمل عليه نسخة Overleaf الخاصة بك، ويفضل أن يكون في موقع مختلف تمامًا.
* قد يوفر تكرار قواعد البيانات على عدة مثيلات من MongoDB بعض التكرار، لكنه لا يحمي من التلف.
* يُعد اختبار نسخك الاحتياطية أفضل طريقة للتأكد من أنها كاملة وتعمل بشكل صحيح.
  {% endhint %}

### 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 [هنا](/on-premises/ar/althyeh/overleaf-toolkit/redis.md#enabling-append-only-file-persistence).

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

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

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

بافتراض أن النسخة الجديدة لا تحتوي على بيانات بعد، فإليك بعض الخطوات التي يمكنك اتباعها. على مستوى عالٍ، نقوم بإنشاء ملف tarball لـ `mongo`, `redis` و `overleaf` وحدات التخزين، ثم ننسخه إلى الخادم الجديد ونفكّ ضغطه هناك مرة أخرى.

#### Toolkit

```bash
# إيقاف النسخة القديمة بسلاسة
old-server$ bin/stop

# إنشاء ملف tarball
old-server$ tar --create --file backup-old-server.tar config/ data/

# انسخ ملف backup-old-server.tar من الخادم القديم إلى
# الخادم الجديد باستخدام أي طريقة مناسبة

# إيقاف النسخة الجديدة بسلاسة (إذا كانت قد بدأت بالفعل)
new-server$ bin/stop

# انقل البيانات الجديدة، ويمكنك حذفها أيضًا
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

# املأ دليل config/data مرة أخرى
new-server$ tar --extract --file backup-old-server.tar

# تشغيل الحاويات
new-server$ bin/up
```

#### Docker Compose

```bash
# إيقاف النسخة القديمة بسلاسة
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

# إنشاء ملف tarball
old-server$ tar --create --file backup-old-server.tar ~/OVERLEAF_data ~/mongo_data ~/redis_data

# انسخ ملف backup-old-server.tar من الخادم القديم إلى
# الخادم الجديد باستخدام أي طريقة مناسبة

# إيقاف النسخة الجديدة بسلاسة (إذا كانت قد بدأت بالفعل)
new-server$ docker stop sharelatex
new-server$ docker stop mongo redis

# انقل البيانات الجديدة، ويمكنك حذفها أيضًا
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

# املأ أدلة البيانات مرة أخرى
new-server$ tar --extract --file backup-old-server.tar

# تشغيل الحاويات
new-server$ docker start mongo redis
new-server$ docker start sharelatex
```

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

{% hint style="info" %}
عند التشغيل كمستخدم الجذر (أو باستخدام sudo)، سيحتفظ tar بمالك الملف/المجموعة والأذونات، وهو أمر بالغ الأهمية عند استعادة النسخة الاحتياطية.
{% endhint %}

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

{% hint style="info" %}
تحتوي المجلدات التالية على ملاحظات إضافية:

* (ب) تُضمَّن في النسخ الاحتياطية، والأفضل عند إيقاف النسخة لضمان الاتساق
* (د) يمكن حذفها
* (هـ) ملفات مؤقتة، يمكن حذفها عند إيقاف النسخة
  {% endhint %}

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/on-premises/ar/alsyanh/data-and-backups.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
