> 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/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, vennligst 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: Vennligst ta kontakt med support før du migrerer dataene dine til S3.
{% endhint %}

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

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

### Krav

* En S3-kompatibel objektlagring å koble til, se [S3](/on-premises/on-premises-no/konfigurasjon/overleaf-toolkit/s3.md#s3-setup) for alternativer
* Ledig diskplass for migrering av eksisterende data, omtrent den nåværende størrelsen på disken
* Et vedlikeholdsvindu for å gjennomføre selve migreringen
* En fullstendig sikkerhetskopi, inkludert konfigurasjonen, slik at det er mulig å gjenopprette fra den

### Estimer diskstørrelsen som trengs for migreringen

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

```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 diskplass tilgjengelig på den gjeldende serveren, kan du prøve å koble til en ekstra disk til serveren.

{% hint style="info" %}
Historikk-katalogene har allerede riktig struktur. Du kan laste opp direkte fra den bind-monterte kildekatalogen, 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 nyopplastede filer.

Se veiledningen vår for å utføre en konsistent sikkerhetskopi for nedstengingsprosedyren.

#### Trinn 1: skriv om katalogstrukturen

Vi må skrive om katalogstrukturen for prosjektfiler for å laste dem opp til S3. Katalogstrukturen for lokal lagring i filelageret er `<prosjekt-id>_<fil-id>` og katalogstrukturen i S3 er `<prosjekt-id>/<fil-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 den S3-kompatible objektlagringen din.

**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-bøttene 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, men 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 med S3 som mål

Legg til alle S3-relaterte variabler i konfigurasjonen din, slik det er 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) oppsettveiledningen.

For Docker Compose-utrullinger kan du også fjerne bind-mounten for datakatalogen fra volumseksjonen.

{% hint style="success" %}
Vennligst behold [bind-mounten av en scratch-disk for flyktige 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 redigeringsprogrammet
* kan kompilere en PDF med bilder
* kan laste opp nye filer

### Tilbakeføring

Du kan rulle tilbake migreringen på en skånsom måte ved å utføre trinnene i omvendt rekkefølge:

1. Slå av instansen
2. Speil filene tilbake ved å bytte rekkefølgen på kilde og destinasjon
3. Skriv nye filer tilbake i den lokale katalogen ved hjelp av en omvendt `transformering`
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 til 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 transformeringen fjerner toppnivåkatalogen. Den andre transformeringen endrer katalogstrukturen til en flat struktur. Jokertegnene sikrer at bare filer pakkes ut, ikke deres overordnede (prosjekt-)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://ayakaleaf-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.
