> 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/de/wartung/s3-migration.md).

# S3-Migration

## S3-Migration

{% hint style="info" %}
Diese Anweisungen gelten für v5.x und höher. Wenn Sie dieser Anleitung für eine frühere Version folgen, verwenden Sie bitte `sharelatex` anstatt von `overleaf` in Pfadnamen und `SHARELATEX_` Präfix statt `OVERLEAF_` für Umgebungsvariablen.
{% endhint %}

{% hint style="warning" %}
Server-Pro-Kunden: Bitte wenden Sie sich an den Support, bevor Sie Ihre Daten nach S3 migrieren.
{% endhint %}

{% hint style="success" %}
**Wir würden gerne von Ihnen hören!** Wenn Sie uns mitteilen möchten, wie viele Dateien Sie migriert haben, wie groß das Gesamtvolumen war und wie lange die Migration gedauert hat, schreiben Sie eine E-Mail an [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Diese Anleitung führt Sie durch die Migration von der Speicherung auf der Festplatte zu einem S3-kompatiblen Objektspeicher. Sie verweist auf Abschnitte des Einleitungsdokuments zur [S3-Einrichtung](/on-premises/de/konfiguration/overleaf-toolkit/s3.md).

### Anforderungen

* Ein S3-kompatibler Objektspeicher, mit dem man arbeiten kann, siehe [S3](/on-premises/de/konfiguration/overleaf-toolkit/s3.md#s3-setup) für Optionen
* Freier Speicherplatz für die Migration vorhandener Daten, etwa die aktuelle Größe auf der Festplatte
* Ein Wartungsfenster für die eigentliche Migration
* Ein vollständiges Backup, einschließlich der Konfiguration, um daraus eine Wiederherstellung zu ermöglichen

### Schätzen Sie die für die Migration benötigte Festplattengröße

Wir können `du` zur Berechnung der aktuellen Festplattennutzung verwenden:

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

Falls auf dem aktuellen Server nicht genügend Speicherplatz verfügbar ist, versuchen Sie, dem Server eine weitere Festplatte anzuschließen.

{% hint style="info" %}
Die Verzeichnisse für den Verlauf haben bereits die richtige Struktur. Sie können direkt aus dem per Bind-Mount eingebundenen Quellordner hochladen, was keinen zusätzlichen Speicherplatz erfordert.
{% endhint %}

### Migrationsschritte

#### Schritt 0: Instanz herunterfahren

Wir müssen sicherstellen, dass alle Benutzer-/Vorlagendateien migriert werden. Am besten fahren Sie die Instanz herunter, um zu verhindern, dass neu hochgeladene Dateien fehlen.

Bitte lesen Sie unsere Anleitung zur Durchführung eines konsistenten Backups für das Herunterfahren der Instanz.

#### Schritt 1: Verzeichnisstruktur umschreiben

Wir müssen die Verzeichnisstruktur der Projektdaten neu schreiben, um sie nach S3 hochzuladen. Die Verzeichnisstruktur für die lokale Speicherung im Filestore ist `<Projekt-ID>_<Datei-ID>` und die Verzeichnisstruktur in S3 ist `<Projekt-ID>/<Datei-ID>`.

Im Folgenden wird `/srv/overleaf-s3-migration` zum Speichern der Dateien in der neuen Verzeichnisstruktur verwendet.

Wir können `tar` zum Umschreiben der Struktur verwenden:

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

#### Schritt 2: Dateien hochladen

Je nach Präferenz können Sie den minio-mc-S3-Client oder die aws cli verwenden, um die Dateien in Ihren S3-kompatiblen Objektspeicher hochzuladen.

**aws cli**

{% hint style="info" %}

* Hier sollten Sie `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` und `overleaf-chunks` durch die Namen Ihrer S3-Buckets ersetzen.
* Ersetzen Sie außerdem `/srv/overleaf-bind-mount` durch den lokalen Pfad des `/var/lib/overleaf` Bind-Mounts. Standardmäßig ist dies `~/overleaf_data` in einer docker-compose.yml-Bereitstellung und `<toolkit-checkout>/data/overleaf` bei Verwendung des Toolkits.
  {% 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**

Wir verwenden hier den Server-Alias „s3“; Sie haben möglicherweise einen anderen Namen gewählt.

{% 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 %}

#### Schritt 3: Instanz mit Verweis auf S3 starten

Fügen Sie alle S3-bezogenen Variablen zu Ihrer Konfiguration hinzu, wie im [Überblick über die Variablen](/on-premises/de/konfiguration/overleaf-toolkit/s3.md#overview-of-variables) Abschnitt der [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) Einrichtungsanleitung beschrieben.

Bei Docker-Compose-Bereitstellungen können Sie außerdem den Bind-Mount für das Datenverzeichnis aus dem volumes-Abschnitt entfernen.

{% hint style="success" %}
Bitte behalten Sie den [Bind-Mount einer Scratch-Disk für flüchtige Dateien](/on-premises/de/support/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) bei.
{% endhint %}

Sie können die Instanz jetzt starten und die Migration validieren:

* kann Binärdateien im Editor anzeigen
* kann ein PDF mit Bildern kompilieren
* kann neue Dateien hochladen

### Zurückrollen

Sie können die Migration sauber zurückrollen, indem Sie die Schritte in umgekehrter Reihenfolge ausführen:

1. Instanz herunterfahren
2. Dateien zurückspiegeln, indem Sie die Reihenfolge von Quelle/Ziel umkehren
3. Schreiben Sie neue Dateien mithilfe einer inversen `Transformation`
4. Instanz mit der alten Konfiguration neu starten

{% code overflow="wrap" %}

```shell
# Bei Verwendung von 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

# Bei Verwendung von 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
# Dateien in lokales Server CE/Server Pro schreiben
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" %}
Die erste Transformation entfernt den obersten Ordner. Die zweite Transformation ändert die Verzeichnisstruktur in eine flache Struktur. Die Platzhalter stellen sicher, dass nur Dateien extrahiert werden, nicht ihre übergeordneten (Projekt-)Ordner.
{% 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/de/wartung/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.
