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

# الترحيل إلى S3

## الترحيل إلى S3

<Info>
  هذه التعليمات مخصصة للإصدار v5.x وما بعده. إذا كنت تتبع هذا الدليل لإصدار أقدم، فيُرجى استخدام `sharelatex` بدلًا من `overleaf` في أسماء المسارات، والبادئة `SHARELATEX_` بدلًا من `OVERLEAF_` لمتغيرات البيئة. بالنسبة للإصدار v6 وما بعده، تخطَّ أوامر `user_files` القديمة.
</Info>

<Check>
  <strong>يسعدنا أن نسمع منك!</strong> إذا كنت ترغب في مشاركتنا عدد الملفات التي رحّلتها، وحجمها الإجمالي، والمدة التي استغرقها الترحيل، فراسلنا عبر البريد الإلكتروني [`ayaka-notes@outlook.com`](mailto:support@overleaf.com) .
</Check>

سيرشدك هذا الدليل خلال الترحيل من التخزين على القرص إلى تخزين كائنات متوافق مع S3. ويشير إلى أقسام من المستند التمهيدي حول [إعداد S3](/ar/on-premises/configuration/overleaf-toolkit/s3).

### المتطلبات

* تخزين كائنات متوافق مع S3 للتواصل معه، راجع [#s3-setup](/ar/on-premises/configuration/overleaf-toolkit/s3#s3-setup "mention") للاطلاع على الخيارات
* مساحة قرص فارغة لترحيل البيانات الحالية، تعادل تقريبًا الحجم الحالي على القرص
* فترة صيانة لإجراء الترحيل الفعلي
* نسخة احتياطية كاملة، بما في ذلك الإعدادات، لتمكين الاستعادة منها

### تقدير مساحة القرص اللازمة للترحيل

يمكننا استخدام `du` لحساب استخدام القرص الحالي:

```shell theme={null}
docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/user_files

docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/template_files
```

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

<Info>
  تتمتع مجلدات السجل (history) بالبنية الصحيحة مسبقًا. يمكنك الرفع مباشرةً من مجلد المصدر المربوط (bind-mounted)، وهو ما لا يتطلب أي مساحة قرص إضافية.
</Info>

### خطوات الترحيل

#### الخطوة 0: إيقاف المثيل

نحتاج إلى التأكد من ترحيل جميع ملفات المستخدمين/القوالب. ومن الأفضل إيقاف المثيل لتجنب فقدان الملفات المرفوعة حديثًا.

يُرجى الاطلاع على دليلنا حول إجراء نسخ احتياطي متّسق لمعرفة إجراءات الإيقاف.

#### الخطوة 1: إعادة كتابة بنية المجلدات

نحتاج إلى إعادة كتابة بنية مجلدات ملفات المشاريع لرفعها إلى S3. بنية المجلدات للتخزين المحلي في filestore هي `<project-id>_<file-id>`، بينما بنية المجلدات في S3 هي `<project-id>/<file-id>`.

فيما يلي، يُستخدم `/srv/overleaf-s3-migration` لتخزين الملفات بالبنية الجديدة للمجلدات. استبدل `/srv/overleaf-bind-mount` بمجلد المضيف المربوط بالمسار `/var/lib/overleaf`. شغّل أوامر النسخ على المضيف بصلاحيات تتيح قراءة هذه المجلدات والكتابة فيها؛ وتبقى الحاوية متوقفة.

يمكننا الاستفادة من `tar` لإعادة كتابة البنية:

```shell theme={null}
mkdir -p /srv/overleaf-s3-migration/user_files \
         /srv/overleaf-s3-migration/template_files
tar --create --directory /srv/overleaf-bind-mount/data/user_files . \
| tar --extract --directory /srv/overleaf-s3-migration/user_files \
  --transform=sx_x/x
tar --create --directory /srv/overleaf-bind-mount/data/template_files . \
| tar --extract --directory /srv/overleaf-s3-migration/template_files \
  --transform=sx_x/xg
```

#### الخطوة 2: رفع الملفات

بحسب تفضيلك، يمكنك استخدام عميل S3 ‏minio mc أو aws cli لرفع الملفات إلى تخزين الكائنات المتوافق مع S3 لديك.

**aws cli**

<Info>
  * هنا يجب أن تستبدل `overleaf-user-files` و`overleaf-template-files` و`overleaf-project-blobs` و`overleaf-chunks` بأسماء حاويات S3 (buckets) الخاصة بك.
  * واستبدل أيضًا `/srv/overleaf-bind-mount` بالمسار المحلي لربط `/var/lib/overleaf`. افتراضيًا، يكون هذا `~/overleaf_data` في نشر docker-compose.yml، و`<toolkit-checkout>/data/overleaf` عند استخدام Toolkit.
</Info>

```shell wrap theme={null}
aws s3 sync /srv/overleaf-s3-migration/user_files s3://overleaf-user-files
aws s3 sync /srv/overleaf-s3-migration/template_files s3://overleaf-template-files

aws s3 sync /srv/overleaf-bind-mount/data/history/overleaf-project-blobs s3://overleaf-project-blobs
aws s3 sync /srv/overleaf-bind-mount/data/history/overleaf-chunks s3://overleaf-chunks
```

**minio mc**

نستخدم هنا الاسم المستعار للخادم "s3"، وربما اخترت اسمًا آخر.

```shell wrap theme={null}
mc mirror /srv/overleaf-s3-migration/user_files s3/overleaf-user-files
mc mirror /srv/overleaf-s3-migration/template_files s3/overleaf-template-files

mc mirror /srv/overleaf-bind-mount/data/history/overleaf-project-blobs s3/overleaf-project-blobs
mc mirror /srv/overleaf-bind-mount/data/history/overleaf-chunks s3/overleaf-chunks
```

#### الخطوة 3: تشغيل المثيل بحيث يشير إلى S3

أضف جميع المتغيرات المتعلقة بـ S3 إلى إعداداتك، كما هو مفصّل في قسم [نظرة عامة على المتغيرات](/ar/on-premises/configuration/overleaf-toolkit/s3#overview-of-variables) في دليل إعداد [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3).

أبقِ على ربط مجلد البيانات: فقد يحتوي أيضًا على مفاتيح تشفير Zotero أو Mendeley التي لا تُرحَّل إلى S3.

<Check>
  يُرجى الإبقاء على [ربط قرص مؤقت للملفات العابرة](/ar/on-premises/support/troubleshooting#running-overleaf-with-an-nfs-filesystem) كما هو.
</Check>

يمكنك الآن تشغيل المثيل والتحقق من الترحيل:

* إمكانية معاينة الملفات الثنائية في المحرر
* إمكانية ترجمة ملف PDF يحتوي على صور
* إمكانية رفع ملفات جديدة

### التراجع

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

1. أوقف المثيل
2. انسخ الملفات مرة أخرى بعكس ترتيب المصدر/الوجهة
3. اكتب الملفات الجديدة مرة أخرى في المجلد المحلي باستخدام `transform` معكوس
4. أعد تشغيل المثيل بالإعدادات القديمة

```shell wrap theme={null}
# When using aws cli
aws s3 sync s3://overleaf-user-files /srv/overleaf-s3-migration/user_files
aws s3 sync s3://overleaf-template-files /srv/overleaf-s3-migration/template_files
aws s3 sync s3://overleaf-project-blobs /srv/overleaf-bind-mount/data/history/overleaf-project-blobs
aws s3 sync s3://overleaf-chunks /srv/overleaf-bind-mount/data/history/overleaf-chunks

# When using minio mc
mc mirror s3/overleaf-user-files /srv/overleaf-s3-migration/user_files
mc mirror s3/overleaf-template-files /srv/overleaf-s3-migration/template_files
mc mirror s3/overleaf-project-blobs /srv/overleaf-bind-mount/data/history/overleaf-project-blobs
mc mirror s3/overleaf-chunks /srv/overleaf-bind-mount/data/history/overleaf-chunks
```

```shell theme={null}
# Write files into local Server CE/Server Pro
tar --create --directory /srv/overleaf-s3-migration/user_files . \
| tar \
      --extract \
      --keep-old-files \
      --directory /srv/overleaf-bind-mount/data/user_files \
      --transform=sx./xx --transform=sx/x_x \
      --wildcards '*/*/*'

tar --create --directory /srv/overleaf-s3-migration/template_files . \
| tar \
      --extract \
      --keep-old-files \
      --directory /srv/overleaf-bind-mount/data/template_files \
      --transform=sx./xx --transform=sx/x_xg \
      --wildcards '*/*/*/*/pdf-converted-cache/*' \
      --wildcards '*/*/*/*/pdf' \
      --wildcards '*/*/*/*/zip'
```

<Info>
  يزيل التحويل الأول المجلد ذا المستوى الأعلى. ويغيّر التحويل الثاني بنية المجلدات إلى بنية مسطحة. وتضمن أنماط البدل (wildcards) استخراج الملفات فقط، دون المجلدات الأم (مجلدات المشاريع).
</Info>


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