> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-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.

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

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

### نقل البيانات بين الخوادم

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

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

#### Toolkit

```bash
# أوقف المثيل القديم بسلاسة
old-server$ bin/stop

# أنشئ ملف tar
old-server$ tar --create --file backup-old-server.tar config/ data/

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

# أوقف المثيل الجديد بسلاسة (إذا كان قد بدأ بالفعل)
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

# أنشئ ملف tar
old-server$ tar --create --file backup-old-server.tar ~/OVERLEAF_data ~/mongo_data ~/redis_data

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

# أوقف المثيل الجديد بسلاسة (إذا كان قد بدأ بالفعل)
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" %}
تحتوي المجلدات التالية على تلميحات إضافية:

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

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. ذاكرة التخزين المؤقت (e)
         * ذاكرة تخزين مؤقت للملفات الثنائية الخاصة بعمليات الترجمة
      2. عمليات الترجمة (e)
         * تتم هنا عملية ترجمة LaTeX
      3. db.sqlite (d)
         * غير مستخدم في الإصدار الأحدث، وكان يخزن سابقًا تفاصيل ذاكرة تخزين clsi المؤقتة (إما نُقلت إلى خرائط بسيطة في الذاكرة أو نقوم بمسح القرص)
      4. db.sqlite-wal (d)
         * غير مستخدم في الإصدار الأحدث، راجع db.sqlite
      5. المخرجات (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)
         * ملفات مؤقتة لترحيلات سجل المشروع الكامل


---

# 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://overleaf-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.
