> 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/da/vedligeholdelse/s3-migration.md).

# S3-migrering

## S3-migrering

{% hint style="info" %}
Disse instruktioner er til v5.x og nyere. Hvis du følger denne vejledning for en tidligere version, skal du bruge `sharelatex` i stedet for `overleaf` i sti-navne og `SHARELATEX_` præfiks i stedet for `OVERLEAF_` for miljøvariabler.
{% endhint %}

{% hint style="warning" %}
Server Pro-kunder: Kontakt venligst support, før du migrerer dine data til S3.
{% endhint %}

{% hint style="success" %}
**Vi vil meget gerne høre fra dig!** Hvis du vil dele med os, hvor mange filer du migrerede, deres samlede volumen og hvor lang tid migreringen tog, så send en e-mail til [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Denne vejledning guider dig gennem migreringen fra lagring på disk til et S3-kompatibelt objektlager. Den henviser til afsnit i introduktionsdokumentet om [S3-opsætning](/on-premises/da/konfiguration/overleaf-toolkit/s3.md).

### Krav

* Et S3-kompatibelt objektlager at kommunikere med, se [S3](/on-premises/da/konfiguration/overleaf-toolkit/s3.md#s3-setup) for muligheder
* Ledig diskplads til at migrere eksisterende data, omtrent den nuværende diskstørrelse
* Et vedligeholdelsesvindue til selve migreringen
* En fuld sikkerhedskopi, inklusive konfigurationen, for at muliggøre gendannelse fra den

### Beregn den nødvendige diskstørrelse til migreringen

Vi kan bruge `du` til at beregne det nuværende diskforbrug:

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

Hvis du ikke har tilstrækkelig ledig diskplads på den aktuelle server, så prøv at tilslutte en anden disk til serveren.

{% hint style="info" %}
Historik-mapperne har allerede det korrekte layout. Du kan uploade direkte fra den bind-mountede kilde-mappe, hvilket ikke kræver yderligere diskplads.
{% endhint %}

### Migreringstrin

#### Trin 0: Luk instansen ned

Vi skal sikre os, at alle bruger-/skabelonfiler bliver migreret. Det er bedst at lukke instansen ned for at undgå at overse nyligt uploadede filer.

Se venligst vores vejledning om at lave en konsistent sikkerhedskopi for nedlukningsproceduren.

#### Trin 1: Omskriv mappestrukturen

Vi skal omskrive mappestrukturen for projektfiler for at uploade dem til S3. Mappestrukturen for lokal lagring i filestore er `<project-id>_<file-id>` og mappestrukturen i S3 er `<project-id>/<file-id>`.

I det følgende, `/srv/overleaf-s3-migration` bruges til at gemme filerne i den nye mappestruktur.

Vi kan gøre brug af `tar` til at omskrive layoutet:

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

#### Trin 2: Upload filerne

Afhængigt af hvad du foretrækker, kan du bruge minio mc S3-klienten eller aws cli til at uploade filerne til dit S3-kompatible objektlager.

**aws cli**

{% hint style="info" %}

* Her skal du erstatte `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` og `overleaf-chunks` med navnene på dine S3-buckets.
* Erstat også `/srv/overleaf-bind-mount` med den lokale sti til `/var/lib/overleaf` bind-mounten. Som standard er dette `~/overleaf_data` i en docker-compose.yml-implementering og `<toolkit-checkout>/data/overleaf` ved brug af 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**

Vi bruger serveraliaset "s3" her; du har måske valgt et andet navn.

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

#### Trin 3: Start instansen, der peger på S3

Tilføj alle de S3-relaterede variabler til din konfiguration, som beskrevet i [Oversigt over variabler](/on-premises/da/konfiguration/overleaf-toolkit/s3.md#overview-of-variables) afsnittet i [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) opsætningsvejledning.

For Docker Compose-implementeringer kan du også fjerne bind-mounten for datamappen fra volumes-sektionen.

{% hint style="success" %}
Behold venligst [bind-mounten af en midlertidig disk til flygtige filer](/on-premises/da/support/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) på plads.
{% endhint %}

Du kan nu starte instansen og validere migreringen:

* kan forhåndsvise binære filer i editoren
* kan kompilere en PDF med billeder
* kan uploade nye filer

### Tilbagerulning

Du kan tilbagerulle migreringen på en pæn måde ved at udføre trinnene i omvendt rækkefølge:

1. Luk instansen ned
2. Spejl filerne tilbage ved at bytte om på rækkefølgen af kilde/destination
3. Skriv nye filer tilbage i den lokale mappe ved hjælp af en omvendt `transformering`
4. Genstart instansen med den gamle konfiguration

{% code overflow="wrap" %}

```shell
# Ved brug af 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

# Ved brug af 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
# Skriv filer ind i lokal 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" %}
Den første transformering fjerner mappen på øverste niveau. Den anden transformering ændrer mappestrukturen til en flad struktur. Wildcards sikrer, at kun filer udtrækkes, ikke deres overordnede (projekt-)mapper.
{% 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/da/vedligeholdelse/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.
