> 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/nl/onderhoud/s3-migration.md).

# S3-migratie

## S3-migratie

{% hint style="info" %}
Deze instructies zijn voor v5.x en later. Als u deze handleiding voor een eerdere versie volgt, gebruik dan `sharelatex` in plaats van `overleaf` in padnamen en `SHARELATEX_` gebruik het voorvoegsel in plaats van `OVERLEAF_` voor omgevingsvariabelen.
{% endhint %}

{% hint style="warning" %}
Server Pro-klanten: neem contact op met support voordat u uw gegevens naar S3 migreert.
{% endhint %}

{% hint style="success" %}
**We horen graag van u!** Als u met ons wilt delen hoeveel bestanden u hebt gemigreerd, wat hun totale omvang was en hoe lang de migratie duurde, e-mail [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Deze handleiding loodst u door de migratie van opslag op schijf naar een S3-compatibele objectopslag. Er wordt verwezen naar secties uit het inleidende document op de [S3-instelling](/on-premises/nl/configuratie/overleaf-toolkit/s3.md).

### Vereisten

* Een S3-compatibele objectopslag om mee te communiceren, zie [S3](/on-premises/nl/configuratie/overleaf-toolkit/s3.md#s3-setup) voor opties
* Vrije schijfruimte voor het migreren van bestaande gegevens, ongeveer de huidige grootte op schijf
* Een onderhoudsvenster om de daadwerkelijke migratie uit te voeren
* Een volledige back-up, inclusief de configuratie, om herstel daarvan mogelijk te maken

### Schat de benodigde schijfruimte voor de migratie

We kunnen `du` gebruiken om het huidige schijfgebruik te berekenen:

```shell
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
```

Als er op de huidige server niet voldoende schijfruimte beschikbaar is, probeer dan een andere schijf aan de server te koppelen.

{% hint style="info" %}
De historiemappen hebben al de juiste indeling. U kunt rechtstreeks uploaden vanuit de via bind-mount gekoppelde bronmap, waarvoor geen extra schijfruimte nodig is.
{% endhint %}

### Migratiestappen

#### Stap 0: sluit de instantie af

We moeten ervoor zorgen dat alle gebruikers-/templatebestanden worden gemigreerd. Het is het beste om de instantie af te sluiten om te voorkomen dat nieuw geüploade bestanden ontbreken.

Zie onze handleiding over het maken van een consistente back-up voor de afsluitprocedure.

#### Stap 1: herschrijf de mappenindeling

We moeten de mappenindeling van projectbestanden herschrijven om ze naar S3 te uploaden. De mappenindeling voor lokale opslag in filestore is `<project-id>_<file-id>` en de mappenindeling in S3 is `<project-id>/<file-id>`.

Hierna, `/srv/overleaf-s3-migration` wordt gebruikt om de bestanden in de nieuwe mappenindeling op te slaan.

We kunnen gebruikmaken van `tar` om de indeling te herschrijven:

```shell
mkdir -p /srv/overleaf-s3-migration/user_files \
         /srv/overleaf-s3-migration/template_files
docker exec sharelatex \
  tar --create --directory /var/lib/overleaf/data/user_files . \
| tar --extract --directory /srv/overleaf-s3-migration/user_files \
  --transform=sx_x/x
docker exec sharelatex \
  tar --create --directory /var/lib/overleaf/data/template_files . \
| tar --extract --directory /srv/overleaf-s3-migration/template_files \
  --transform=sx_x/xg
```

#### Stap 2: upload de bestanden

Afhankelijk van uw voorkeur kunt u de minio mc S3-client of de aws cli gebruiken om de bestanden naar uw S3-compatibele objectopslag te uploaden.

**aws cli**

{% hint style="info" %}

* Hier moet u vervangen `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` en `overleaf-chunks` door de namen van uw S3-buckets.
* Vervang ook `/srv/overleaf-bind-mount` door het lokale pad van de `/var/lib/overleaf` bind-mount. Standaard is dit `~/overleaf_data` in een docker-compose.yml-implementatie en `<toolkit-checkout>/data/overleaf` bij gebruik van de Toolkit.
  {% endhint %}

{% code overflow="wrap" %}

```shell
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
```

{% endcode %}

**minio mc**

We gebruiken hier de serveralias "s3"; u hebt mogelijk een andere naam gekozen.

{% code overflow="wrap" %}

```shell
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
```

{% endcode %}

#### Stap 3: start de instantie die naar S3 wijst

Voeg alle S3-gerelateerde variabelen toe aan uw configuratie, zoals beschreven in de [Overzicht van variabelen](/on-premises/nl/configuratie/overleaf-toolkit/s3.md#overview-of-variables) sectie in de [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) installatiehandleiding.

Voor Docker Compose-implementaties kunt u ook de bind-mount voor de datamap verwijderen uit de volumes-sectie.

{% hint style="success" %}
Laat de [bind-mount van een scratchschijf voor tijdelijke bestanden](/on-premises/nl/ondersteuning/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) intact.
{% endhint %}

U kunt nu de instantie starten en de migratie valideren:

* kan binaire bestanden in de editor bekijken
* kan een PDF met afbeeldingen compileren
* kan nieuwe bestanden uploaden

### Terugdraaien

U kunt de migratie netjes terugdraaien door de stappen omgekeerd uit te voeren:

1. Sluit de instantie af
2. Spiegel de bestanden terug door de volgorde van bron/bestemming om te draaien
3. Schrijf nieuwe bestanden terug in de lokale map met behulp van een inverse `transformatie`
4. Start de instantie opnieuw met de oude configuratie

{% code overflow="wrap" %}

```shell
# Bij gebruik van 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

# Bij gebruik van 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
```

{% endcode %}

```shell
# Schrijf bestanden naar lokale Server CE/Server Pro
tar --create --directory /srv/overleaf-s3-migration/user_files . \
| docker exec --interactive sharelatex \
    tar \
      --extract \
      --keep-old-files \
      --directory /var/lib/overleaf/data/user_files \
      --transform=sx./xx --transform=sx/x_x \
      --wildcards '*/*/*'

tar --create --directory /srv/overleaf-s3-migration/template_files . \
| docker exec --interactive sharelatex \
    tar \
      --extract \
      --keep-old-files \
      --directory /var/lib/overleaf/data/template_files \
      --transform=sx./xx --transform=sx/x_xg \
      --wildcards '*/*/*/*/pdf-converted-cache/*' \
      --wildcards '*/*/*/*/pdf' \
      --wildcards '*/*/*/*/zip'
```

{% hint style="info" %}
De eerste transformatie verwijdert de map op het hoogste niveau. De tweede transformatie zet de mappenindeling om naar een vlakke indeling. De wildcards zorgen ervoor dat alleen bestanden worden uitgepakt, niet hun bovenliggende (project)mappen.
{% endhint %}


---

# 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/nl/onderhoud/s3-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.
