> 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/on-premises-no/vedlikehold/s3-migration.md).

# S3-migrering

## S3-migrering

{% hint style="info" %}
Disse instruksjonene gjelder for v5.x og nyere. Hvis du følger denne veiledningen for en tidligere versjon, bruk `sharelatex` i stedet for `overleaf` i banenavn og `SHARELATEX_` prefiks i stedet for `OVERLEAF_` for miljøvariabler.
{% endhint %}

{% hint style="warning" %}
Server Pro-kunder: Ta kontakt med support før du migrerer dataene dine til S3.
{% endhint %}

{% hint style="success" %}
**Vi hører gjerne fra deg!** Hvis du vil dele med oss hvor mange filer du migrerte, det totale volumet deres, og hvor lang tid migrasjonen tok, send e-post til [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Denne veiledningen tar deg gjennom migreringen fra diskbasert lagring til en S3-kompatibel objektlagring. Den viser til seksjoner i introduksjonsdokumentet om [S3-oppsett](/on-premises/on-premises-no/konfigurasjon/overleaf-toolkit/s3.md).

### Krav

* En S3-kompatibel objektlagring å kommunisere med, se [S3](/on-premises/on-premises-no/konfigurasjon/overleaf-toolkit/s3.md#s3-setup) for alternativer
* Ledig diskplass for å migrere eksisterende data, omtrent den nåværende størrelsen på disken
* Et vedlikeholdsvindu for å utføre selve migrasjonen
* En full sikkerhetskopi, inkludert konfigurasjonen, for å kunne gjenopprette fra den

### Estimer diskstørrelsen som trengs for migrasjonen

Vi kan bruke `du` for å beregne nåværende diskbruk:

```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 nok ledig diskplass tilgjengelig på den nåværende serveren, kan du prøve å koble en annen disk til serveren.

{% hint style="info" %}
Historikkatalogene har allerede riktig struktur. Du kan laste opp direkte fra den bind-monterte kildemappen, noe som ikke krever ekstra diskplass.
{% endhint %}

### Migreringstrinn

#### Trinn 0: slå av instansen

Vi må sørge for at alle bruker-/malfiler blir migrert. Det er best å slå av instansen for å unngå å gå glipp av nylig opplastede filer.

Se veiledningen vår om å utføre en konsistent sikkerhetskopi for prosedyren for å slå av.

#### Trinn 1: skriv om katalogstrukturen

Vi må skrive om katalogstrukturen for prosjektfiler for å laste dem opp til S3. Katalogstrukturen for lokal lagring i filestore er `<project-id>_<file-id>` og katalogstrukturen i S3 er `<project-id>/<file-id>`.

I det følgende, `/srv/overleaf-s3-migration` brukes til å lagre filene i den nye katalogstrukturen.

Vi kan bruke `tar` for å skrive om strukturen:

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

#### Trinn 2: last opp filene

Avhengig av hva du foretrekker, kan du bruke minio mc S3-klienten eller aws cli for å laste opp filene til din S3-kompatible objektlagring.

**aws cli**

{% hint style="info" %}

* Her bør du erstatte `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` og `overleaf-chunks` med navnene på S3-bucketene dine.
* Erstatt også `/srv/overleaf-bind-mount` med den lokale stien til `/var/lib/overleaf` bind-mounten. Som standard er dette `~/overleaf_data` i en docker-compose.yml-utrulling og `<toolkit-checkout>/data/overleaf` når du bruker 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 bruker serveraliaset "s3" her; du kan ha valgt et annet 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 %}

#### Trinn 3: start instansen som peker mot S3

Legg til alle S3-relaterte variabler i konfigurasjonen din, som beskrevet i [Oversikt over variabler](/on-premises/on-premises-no/konfigurasjon/overleaf-toolkit/s3.md#overview-of-variables) seksjonen i [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) oppsettsguiden.

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

{% hint style="success" %}
Vennligst behold [bind-mounten av en scratch-disk for midlertidige filer](/on-premises/on-premises-no/stotte/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) på plass.
{% endhint %}

Du kan nå starte instansen og validere migreringen:

* kan forhåndsvise binærfiler i editoren
* kan kompilere en PDF med bilder
* kan laste opp nye filer

### Tilbakerulling

Du kan rulle tilbake migreringen på en smidig måte ved å reversere trinnene:

1. Slå av instansen
2. Speil filene tilbake ved å bytte om rekkefølgen på kilde/mål
3. Skriv nye filer tilbake til den lokale mappen ved å bruke en invers `transformasjon`
4. Start instansen på nytt med den gamle konfigurasjonen

{% code overflow="wrap" %}

```shell
# Når du bruker 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

# Når du bruker 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 inn 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 transformasjonen fjerner toppnivåmappen. Den andre transformasjonen endrer katalogstrukturen til en flat struktur. Jokertegnene sørger for at bare filer blir pakket ut, ikke foreldremappene (prosjektmappene) deres.
{% 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/on-premises-no/vedlikehold/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.
