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

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

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

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

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

<Info>
  إذا قمت بالترقية إلى `3.5.13` ثم قررت الرجوع إلى إصدار أقدم، فيجب عليك الاستعادة من نسخة احتياطية كاملة للنظام. سجل المشاريع المُنشأة في `3.5.13` غير متوافق مع الإصدارات الأقدم من Overleaf CE.
</Info>

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

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

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

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

<Steps>
  <Step title="أنشئ نسخة احتياطية">
    أنشئ [نسخة احتياطية](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) كاملة لنسختك مع لقطة متسقة لمجلدات **mongo** و**redis** و**sharelatex**.
  </Step>

  <Step title="حدّث">
    حدّث إصدار صورة sharelatex/sharelatex إلى 3.5.13.

    الـ Toolkit: استخدم السكربت `$ bin/upgrade` لترقية الـ Toolkit إلى أحدث إصدار، وعدّل **config/version** إلى 3.5.13.
  </Step>

  <Step title="شغّل النسخة">
    من الأفضل منع المستخدمين من الوصول إلى نسختك أثناء إجراء الترحيل، لتجنب فقدان البيانات في حال احتجت إلى استعادة نسختك الاحتياطية. راجع [الترحيل دون اتصال](https://github.com/overleaf/overleaf/wiki/Full-Project-History-Migration/#offline-migration) لمزيد من المعلومات حول كيفية القيام بذلك.
  </Step>

  <Step title="انتظر حتى تعمل جميع الخدمات">
    انتظر حتى تعمل جميع الخدمات (انظر الأمر أدناه)

    ```bash wrap theme={null}
    $ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
    web sharelatex is alive (api)%
    ```
  </Step>

  <Step title="شغّل سكربت الترحيل">
    ```bash wrap theme={null}
    # Overleaf Toolkit users:
    $ 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 users:
    $ 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"
    ```

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

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

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

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

    ```bash theme={null}
    Migrated Projects  :  1
    Total Projects     :  51
    Remaining Projects :  51
    Total history records to migrate: 98
    Starting migration...
    Migrating project: 63d29b5772dd80015a81bffe
    migration result { upgraded: true, historyType: 'NoneWithoutConversion' }
    Migrating project: 63d29c2e72dd80015a81c0a2
    migration result { upgraded: true, historyType: 'NoneWithoutConversion' }

    // …

    Migration complete
    ==================
    Projects migrated:  51
    Projects failed:  0
    Done.
    ```

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

    ```bash theme={null}
    Projects failed:  0
    Done.
    ```

    يمكنك إعادة فتح الوصول لمستخدميك (انظر الخطوة التالية). إذا كانت هناك حالات فشل، فيرجى مراجعة قسم استكشاف الأخطاء وإصلاحها أدناه. لا يزال بإمكانك إعادة فتح الموقع إذا لم تُحل المشكلات فورًا، وستبقى المشاريع غير المرحّلة على نظام السجل القديم.
  </Step>

  <Step title="أعد فتح الموقع">
    إذا كنت قد اخترت إجراء ترحيل دون اتصال، فستحتاج إلى إعادة فتح الموقع. إذا كنت لا تزال مسجّل الدخول، فستحتاج إلى:

    1. النقر على زر **Admin** واختيار **Manage Site**
    2. النقر على علامة التبويب **Open/Close Editor**
    3. النقر على زر **Reopen Editor**

    إذا كنت قد أغلقت متصفحك، فستحتاج إلى إعادة تشغيل الموقع باستخدام `$ bin/up`.
  </Step>
</Steps>

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

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

* سجّل الدخول إلى نسخة Overleaf الخاصة بك بحساب مسؤول
* انقر على زر **Admin** واختر **Manage Site**
* انقر على علامة التبويب **Open/Close Editor**
* انقر على زر **Close Editor**
* انقر على زر **Disconnect all users**

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

#### الترحيل أثناء التشغيل

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

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

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

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

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

```bash wrap theme={null}
bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/history/clean_sl_history_data.js"
```

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

<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` بحذف المجموعات كخطوة أخيرة.

  إعادة تشغيل سكربت التنظيف آمنة.
</Info>

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

سنضيف هنا نصائح لاستكشاف الأخطاء وإصلاحها. يرجى ملاحظة أنه على الرغم من أننا نقدّم الدعم عادةً لعملاء 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)، مع ذكر:

الموضوع: Full project history migration problem

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

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

```bash theme={null}
$ 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` الذي يفحص جميع المشاريع في قاعدة البيانات:

```bash wrap theme={null}
$ 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
...
```

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

```bash wrap theme={null}
$ 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"
...
```

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

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

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


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