> 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/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 `overleaf` in Pfadnamen und `SHARELATEX_` Präfix anstelle von `OVERLEAF_` für Umgebungsvariablen.
{% endhint %}

{% hint style="warning" %}
Server-Pro-Kunden: Bitte wenden Sie sich vor der Migration Ihrer Daten zu S3 an den Support.
{% endhint %}

{% hint style="success" %}
**Wir würden uns freuen, von Ihnen zu 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, senden 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 Einführungsdokuments zur [S3-Einrichtung](/on-premises/de/konfiguration/overleaf-toolkit/s3.md).

### Anforderungen

* Einen S3-kompatiblen Objektspeicher, mit dem kommuniziert werden kann, siehe [S3](/on-premises/de/konfiguration/overleaf-toolkit/s3.md#s3-setup) für Optionen
* Freier Festplattenspeicher 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 eine Wiederherstellung daraus 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 Festplattenspeicher verfügbar ist, versuchen Sie, dem Server eine weitere Festplatte anzuschließen.

{% hint style="info" %}
Die History-Verzeichnisse haben bereits das richtige Layout. Sie können direkt aus dem per Bind-Mount eingebundenen Quellordner hochladen, was keinen zusätzlichen Festplattenspeicher erfordert.
{% endhint %}

### Migrationsschritte

#### Schritt 0: Die Instanz herunterfahren

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

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

#### Schritt 1: Verzeichnislayout umschreiben

Wir müssen das Verzeichnislayout der Projektdateien umschreiben, um sie in S3 hochzuladen. Das Verzeichnislayout für den lokalen Speicher im Filestore ist `<project-id>_<file-id>` und das Verzeichnislayout in S3 ist `<project-id>/<file-id>`.

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

Wir können `tar` zum Umschreiben des Layouts 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: Die Dateien hochladen

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

**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: Die 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

Für Docker-Compose-Bereitstellungen können Sie den Bind-Mount für das Datenverzeichnis auch aus dem Volumes-Abschnitt entfernen.

{% hint style="success" %}
Bitte belassen Sie den [Bind-Mount einer Scratch-Disk für temporäre Dateien](/on-premises/de/support/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) an Ort und Stelle.
{% endhint %}

Sie können die Instanz jetzt starten und die Migration überprüfen:

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

### Rollback

Sie können die Migration sauber zurückrollen, indem Sie die Schritte umkehren:

1. Die Instanz herunterfahren
2. Die Dateien zurückspiegeln, indem Sie die Reihenfolge von Quelle/Ziel umkehren
3. Schreiben Sie neue Dateien zurück in das lokale Verzeichnis mithilfe einer inversen `Transformation`
4. Die 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 den lokalen 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 Ordner der obersten Ebene. Die zweite Transformation ändert das Verzeichnislayout in ein flaches Layout. 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://overleaf-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.
