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

# S3-migratie

## S3-migratie

{% hint style="info" %}
Deze instructies gelden 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_` 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 volume was en hoe lang de migratie duurde, e-mail [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Deze handleiding begeleidt u bij de migratie van opslag op schijf naar S3-compatibele objectopslag. Er wordt verwezen naar secties van het inleidingsdocument over de [S3-installatie](/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 omvang op schijf
* Een onderhoudsvenster voor het uitvoeren van de daadwerkelijke migratie
* 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 u op de huidige server onvoldoende schijfruimte beschikbaar hebt, probeer dan een extra schijf aan de server toe te voegen.

{% hint style="info" %}
De history-mappen hebben al de juiste indeling. U kunt rechtstreeks uploaden vanaf de bronmap met bind-mount, waarvoor geen extra schijfruimte nodig is.
{% endhint %}

### Migratiestappen

#### Stap 0: sluit de instantie af

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

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

#### Stap 1: herschrijf de directory-indeling

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

Hierna, `/srv/overleaf-s3-migration` wordt gebruikt voor het opslaan van de bestanden in de nieuwe directory-indeling.

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` met het lokale pad van de `/var/lib/overleaf` bind-mount. Standaard is dit `~/overleaf_data` bij een docker-compose.yml-implementatie en `<toolkit-checkout>/data/overleaf` wanneer u de Toolkit gebruikt.
  {% 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 misschien 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 op S3 is gericht

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 gegevensmap verwijderen uit de volumes-sectie.

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

U kunt de instantie nu 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 om te keren:

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

{% code overflow="wrap" %}

```shell
# Wanneer u aws cli gebruikt
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

# Wanneer u minio mc gebruikt
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 maakt de directory-indeling vlak. 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://overleaf-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.
