> 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/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 stinavn og `SHARELATEX_` prefikset i stedet for `OVERLEAF_` for miljøvariabler.
{% endhint %}

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

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

### Krav

* En S3-kompatibel objektlagring å bruke, se [S3](/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 migreringen
* En full sikkerhetskopi, inkludert konfigurasjonen, slik at du kan 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 ledig diskplass på den nåværende serveren, kan du prøve å koble til en ekstra disk på serveren.

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

### Migreringssteg

#### Steg 0: slå av instansen

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

Se veiledningen vår om å ta en konsistent sikkerhetskopi for fremgangsmåten ved nedstenging.

#### Steg 1: skriv om katalognivåstrukturen

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

#### Steg 2: last opp filene

Avhengig av hva du foretrekker, kan du bruke minio mc S3-klienten eller aws cli for å laste opp filene til objektlagringen din som er kompatibel med S3.

**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-mountet. Som standard er dette `~/overleaf_data` i en docker-compose.yml-distribusjon 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 %}

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

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

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

{% hint style="success" %}
Behold [bind-mounten av en midlertidig disk for flyktige filer](/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 redigeringsverktøyet
* kan kompilere en PDF med bilder
* kan laste opp nye filer

### Tilbakeføring

Du kan rulle tilbake migreringen på en kontrollert måte ved å reversere stegene:

1. Slå av instansen
2. Speil filene tilbake ved å bytte rekkefølgen på kilde/destinasjon
3. Skriv nye filer tilbake i den lokale katalogen ved å bruke en omvendt `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 sikrer at bare filer ekstraheres, 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/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.
