> 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/aldam/support-guides/full-project-history-migration.md).

# (ترحيل v3.5.13) ترحيل السجل الكامل للمشروع

## ترحيل سجل المشروع الكامل

يجب أن يكون `3.5.x` من إصدار Community Edition يتضمن [ميزة سجل المشروع الكامل](https://www.overleaf.com/learn/latex/Using_the_History_feature) المتاحة بالفعل في عرض SaaS الخاص بنا، [overleaf.com](http://overleaf.com/)

بعد ترقية نسختك إلى Overleaf CE `3.5.13`، ستستخدم جميع المشاريع الجديدة سجل المشروع الكامل افتراضيًا. ستستمر المشاريع الحالية في استخدام نظام السجل القديم حتى يتم ترحيلها.

{% hint style="info" %}
إذا قمت بالترقية إلى `3.5.13` وقررت الرجوع إلى إصدار أقدم، فيجب عليك الاستعادة من نسخة احتياطية كاملة للنظام. إن سجل المشاريع التي أُنشئت في `3.5.13` غير متوافق مع الإصدارات الأقدم من Overleaf CE.
{% endhint %}

يقدم سجل المشروع الكامل الجديد عدة تحسينات للمستخدمين:

* يتتبع التغييرات في الملفات الثنائية، وهو أمر غير مدعوم في النظام القديم.
* هناك دعم للإصدارات المسمّاة.
* النظام أكثر متانة بشكل عام، وهناك احتمال أقل لفقدان البيانات.

راجع [توثيق سجل المشروع الكامل](https://www.overleaf.com/learn/latex/Using_the_History_feature) للمزيد من المعلومات حول سجل المشروع الكامل.

### ترحيل المشاريع الحالية

{% stepper %}
{% step %}

#### أنشئ نسخة احتياطية

أنشئ [نسخة احتياطية](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) من نسختك مع لقطة متسقة من **mongo**, **redis** و **sharelatex** المجلدات.
{% endstep %}

{% step %}

#### تحديث

حدِّث إصدار صورة sharelatex/sharelatex إلى 3.5.13.

Toolkit: استخدم `$ bin/upgrade` السكربت لترقية toolkit إلى أحدث إصدار وقم بتعديل **config/version** إلى 3.5.13.
{% endstep %}

{% step %}

#### ابدأ النسخة

من الأفضل أن تمنع المستخدمين من الوصول إلى نسختك أثناء إجراء الترحيل، لتجنب فقدان البيانات في حال احتجت إلى استعادة نسختك الاحتياطية. راجع [الترحيل دون اتصال](https://github.com/overleaf/overleaf/wiki/Full-Project-History-Migration/#offline-migration) لمزيد من المعلومات حول كيفية القيام بذلك.
{% endstep %}

{% step %}

#### انتظر حتى تصبح جميع الخدمات قيد التشغيل وتعمل

انتظر حتى تصبح جميع الخدمات قيد التشغيل وتعمل (راجع الأمر أدناه)

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
الويب sharelatex يعمل (api)%
```

{% endcode %}
{% endstep %}

{% step %}

#### شغّل سكربت الترحيل

{% code overflow="wrap" %}

```bash
# مستخدمو Overleaf Toolkit:
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; VERBOSE_LOGGING=true node scripts/history/migrate_history.js --force-clean --fix-invalid-characters --convert-large-docs-to-file"

# مستخدمو legacy docker-compose.yml:
$ docker exec sharelatex /bin/bash -c "cd /overleaf/services/web; VERBOSE_LOGGING=true node scripts/history/migrate_history.js --force-clean --fix-invalid-characters --convert-large-docs-to-file"
```

{% endcode %}

`--force-clean` يمسح بيانات سجل المشروع التي تم ترحيلها جزئيًا في النظام الجديد، وهذا يسمح بإعادة محاولة الترحيل للمشاريع الفردية التي فشلت في المحاولات السابقة؛

`--fix-invalid-characters` يستبدل الأحرف غير القابلة للطباعة غير المدعومة من نظام السجل الجديد؛

`--convert-large-docs-to-file` يحوّل المستندات التي تتجاوز حد حجم التحرير البالغ 2 ميغابايت إلى ملف غير قابل للتحرير)

يجب أن تبدو المخرجات كما يلي:

```bash
المشاريع المُرحَّلة  :  1
إجمالي المشاريع     :  51
المشاريع المتبقية :  51
إجمالي سجلات السجل المراد ترحيلها: 98
بدء الترحيل...
ترحيل المشروع: 63d29b5772dd80015a81bffe
نتيجة الترحيل { upgraded: true, historyType: 'NoneWithoutConversion' }
ترحيل المشروع: 63d29c2e72dd80015a81c0a2
نتيجة الترحيل { upgraded: true, historyType: 'NoneWithoutConversion' }

// …

اكتمل الترحيل
==================
المشاريع المُرحَّلة:  51
المشاريع الفاشلة:  0
تم.
```

إذا نجح الترحيل، فستحصل على رمز خروج بقيمة `0`، والأسطر الأخيرة تشير إلى عدم وجود أي حالات فشل:

```bash
المشاريع الفاشلة:  0
تم.
```

يمكنك إعادة إتاحة الوصول لمستخدميك (راجع الخطوة التالية). إذا كانت هناك حالات فشل، فيرجى الاطلاع على قسم استكشاف الأخطاء وإصلاحها أدناه. لا يزال بإمكانك إعادة فتح الموقع إذا لم تُحل المشكلات على الفور، وستبقى المشاريع غير المُرحَّلة على نظام السجل القديم.
{% endstep %}

{% step %}

#### إعادة فتح الموقع

إذا كنت قد اخترت تنفيذ ترحيل دون اتصال، فستحتاج إلى إعادة فتح الموقع. إذا كنت لا تزال مسجلاً الدخول، فستحتاج إلى:

1. انقر على **المسؤول** الزر واختر **إدارة الموقع**
2. انقر على **فتح/إغلاق المحرر** علامة تبويب
3. انقر على **إعادة فتح المحرر** الزر

إذا كنت قد أغلقت متصفحك، فستحتاج إلى إعادة تشغيل الموقع باستخدام `$ bin/up`.
{% endstep %}
{% endstepper %}

#### الترحيل دون اتصال

لمنع المستخدمين من القدرة على تسجيل الدخول أثناء تشغيل سكربت ترحيل السجل، يُرجى اتباع الخطوات التالية:

* سجّل الدخول إلى نسخة Overleaf الخاصة بك باستخدام حساب مسؤول
* انقر على **المسؤول** الزر واختر **إدارة الموقع**
* انقر على **فتح/إغلاق المحرر** علامة تبويب
* انقر على **إغلاق المحرر** الزر
* انقر على **قطع اتصال جميع المستخدمين** الزر

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

#### الترحيل عبر الإنترنت

يمكن تشغيل سكربتات الترحيل بينما التطبيق لا يزال يعمل. هناك بعض الاعتبارات التي يجب أخذها في الحسبان:

* عملية الترحيل كثيفة الاستهلاك للمعالج، لذا يجب مراقبة استخدام الموارد أثناء تشغيل السكربت.
* مع قيمة `--concurrency` مرتفعة، قد تواجه حلقة الأحداث في بعض الخدمات (`track-changes` على وجه الخصوص) بعض التوقف، مما يؤدي إلى تجربة مستخدم متدهورة. نوصي بالبدء بالقيمة الافتراضية `--concurrency=1` .
* يمكنك إيقاف السكربت في أي وقت. إعادة تشغيله ستستأنف الترحيل من حيث توقفت. هذا مفيد في حال كنت تفضّل تشغيل الترحيل في ساعات أقل ازدحامًا (مثلًا ليلًا).

توصيتنا هي إغلاق الموقع وتشغيل الترحيل دون اتصال خلال نافذة صيانة عندما يكون عدد مشاريعك أقل من 1000 مشروع (`db.projects.count()`). إذا كان عدد المشاريع كبيرًا، يمكنك تشغيل السكربت ومراقبة تقدمه، ثم تقرر ما إذا كنت ستواصل تشغيله عبر الإنترنت أو دون اتصال بناءً على حالتك الخاصة.

#### تنظيف بيانات السجل القديمة

تمت إضافة سكربت لتنظيف بيانات السجل القديمة في Server Pro `3.5.6`, `4.0.6` و `4.1.0`.

{% code overflow="wrap" %}

```bash
bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/history/clean_sl_history_data.js"
```

{% endcode %}

يمكن تشغيل السكربت بعد ترحيل جميع المشاريع. ويمكن أيضًا استخدامه لتوفير بعض المساحة أثناء إجراء ترحيل عبر الإنترنت.

{% hint style="info" %}
في Server Pro قبل الإصدار 3.5.13، يحذف السكربت محتوى `docHistory` و `docHistoryIndex` المجموعات. لا يحرر MongoDB مساحة القرص بعد حذف المستندات، بل سيعيد استخدام تلك المساحة للمستندات المستقبلية في المجموعة نفسها. لن يُكتب إلى هذه المجموعات مرة أخرى بعد ترحيل السجل، لذا ستبقى مساحة القرص غير مستخدمة.

إذا كنت تريد إتاحة مساحة القرص مرة أخرى، يمكنك الترقية إلى Server Pro 3.5.13 (عند استخدام إصدار 3.x) أو Server Pro 4.2.5 (عند استخدام إصدار 4.x) وإعادة تشغيل سكربت التنظيف.

سكربت التنظيف المضمّن في أحدث الإصدارات التصحيحية من Server Pro `3.5.x` وأحدث `4.x.x` يقوم بحذف المجموعات كخطوة نهائية.

من الآمن إعادة تشغيل سكربت التنظيف.
{% endhint %}

### استكشاف الأخطاء وإصلاحها

سنضيف هنا نصائح لاستكشاف الأخطاء وإصلاحها. يُرجى ملاحظة أنه بينما نقدّم عادةً الدعم لعملاء Server Pro فقط، نظرًا لطبيعة هذا الترحيل، سنبذل أيضًا قصارى جهدنا لدعم عملاء CE الذين يواجهون مشكلات خاصة بترحيل سجل المشروع الكامل.

إذا فشل سكربت ترحيل سجل المشروع الكامل (أي أنه أنهى التنفيذ مع خطأ أو طبع عددًا غير صفري من المشاريع الفاشلة)، فيرجى إرسال التفاصيل التالية إلى فريق الدعم لدينا عبر البريد الإلكتروني [support+historymigration@overleaf.com](mailto:support+historymigration@overleaf.com?subject=Full%20project%20history%20migration%20problem\&body=Instance%20Type%3A%20CE%20or%20Server%20Pro%20%28delete%20as%20appropriate%29%0A%0AInstallation%20Type%3A%20Overleaf%20toolkit%20or%20docker-compose.yml%20or%20other%20%28delete%20as%20appropriate%29%0A%0AScript%20output%3A%0A%0Abin%2Fdoctor%20output%20%28if%20using%20toolkit%29%3A%0A)، مع توضيح ما يلي:

الموضوع: مشكلة في ترحيل سجل المشروع الكامل

* نوع النسخة: CE أو Server Pro (احذف ما لا ينطبق)
* نوع التثبيت: Overleaf toolkit أو `docker-compose.yml` أو غير ذلك (احذف ما لا ينطبق)
* الإصدار: 3.5.x (toolkit: `$ cat config/version`)
* مخرجات سكربت الترحيل (والتي يجب أن تكون موجودة داخل الحاوية تحت `/overleaf/services/web`)
* المشاريع المُرحَّلة: (وفقًا لمخرجات سكربت الترحيل)
* إجمالي المشاريع: (وفقًا لمخرجات سكربت الترحيل)
* المشاريع المتبقية: (وفقًا لمخرجات سكربت الترحيل)
* مدة الترحيل:
* `bin/doctor` المخرجات (عند استخدام toolkit)
* إصدار Toolkit: `$ git rev-parse HEAD` (عند استخدام Toolkit)

فكّر في إرفاق ملفات السجل الخاصة بـ `history-v1`, `project-history` و `track-changes` الخدمات مع البريد الإلكتروني. يمكنك العثور عليها في `/var/log/sharelatex` داخل `sharelatex` الحاوية وتصديرها بهذه الطريقة:

```bash
$ docker cp sharelatex:/var/log/sharelatex/history-v1.log history-v1.log
$ docker cp sharelatex:/var/log/sharelatex/project-history.log project-history.log
$ docker cp sharelatex:/var/log/sharelatex/track-changes.log track-changes.log
```

يرجى تنقيح أي معلومات حساسة من ملفات السجل قبل إرفاقها.

#### العثور على أشجار الملفات المعطلة

قد يفشل الترحيل للمشاريع التي تحتوي على شجرة ملفات مشوهة (على سبيل المثال، عندما تكون أسماء الملفات فارغة). يمكنك العثور على قائمة بهذه المشكلات باستخدام `find_malformed_filetrees` السكربت الذي يفحص جميع المشاريع في قاعدة البيانات:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/find_malformed_filetrees.js"
BAD PATH: 123456789012345678901234 rootFolder.0.1.2.3
BAD PATH: 123456789012345678901234 rootFolder.0.4.5.6
...
```

{% endcode %}

لإصلاح المسارات غير الصالحة، استخدم `fix_malformed_filetree` السكربت، مع تشغيل الأمر مرة واحدة لكل مسار خاطئ:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/fix_malformed_filetree.js 123456789012345678901234 rootFolder.0.1.2.3"
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/fix_malformed_filetree.js 123456789012345678901234 rootFolder.0.4.5.6"
...
```

{% endcode %}

#### الرجوع بالمشاريع من سجل المشروع الكامل إلى السجل القديم

إذا كان هناك مشروع تم ترحيله إلى سجل المشروع الكامل ولكنك تريد العودة إلى السجل القديم، فاستخدم `downgrade_project` السكربت كما يلي:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; PROJECT_ID=YOUR
```

{% endcode %}


---

# 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/aldam/support-guides/full-project-history-migration.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.
