> 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/sv/underhall/s3-migration.md).

# S3-migrering

## S3-migrering

{% hint style="info" %}
Dessa instruktioner gäller för v5.x och senare. Om du följer den här guiden för en tidigare version, använd `sharelatex` i stället för `overleaf` i sökvägsnamn och `SHARELATEX_` prefix i stället för `OVERLEAF_` för miljövariabler.
{% endhint %}

{% hint style="warning" %}
Server Pro-kunder: Vänligen kontakta support innan du migrerar dina data till S3.
{% endhint %}

{% hint style="success" %}
**Vi vill gärna höra från dig!** Om du vill dela med dig av hur många filer du migrerade, deras totala volym och hur lång migreringen tog, mejla [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Den här guiden leder dig genom migreringen från lagring på disk till ett S3-kompatibelt objektlager. Den hänvisar till avsnitt i introduktionsdokumentet om [S3-uppsättning](/on-premises/sv/konfiguration/overleaf-toolkit/s3.md).

### Krav

* Ett S3-kompatibelt objektlager att ansluta till, se [S3](/on-premises/sv/konfiguration/overleaf-toolkit/s3.md#s3-setup) för alternativ
* Ledigt diskutrymme för att migrera befintliga data, ungefär den nuvarande storleken på disken
* Ett underhållsfönster för att utföra själva migreringen
* En fullständig säkerhetskopia, inklusive konfigurationen, för att möjliggöra återställning från den

### Uppskatta diskutrymmet som behövs för migreringen

Vi kan använda `du` för att beräkna aktuell diskanvändning:

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

Om du inte har tillräckligt med diskutrymme tillgängligt på den nuvarande servern, försök att ansluta en annan disk till servern.

{% hint style="info" %}
Katalogerna för historik har redan rätt layout. Du kan ladda upp direkt från källmappen som är monterad med bind-mount, vilket inte kräver något extra diskutrymme.
{% endhint %}

### Migreringssteg

#### Steg 0: stäng ner instansen

Vi behöver säkerställa att alla användar-/mallfiler migreras. Det är bäst att stänga ner instansen för att undvika att nyligen uppladdade filer missas.

Se vår guide om hur man gör en konsekvent säkerhetskopia för avstängningsproceduren.

#### Steg 1: skriv om katalogstrukturen

Vi behöver skriva om katalogstrukturen för projektfiler för att ladda upp dem till S3. Katalogstrukturen för lokal lagring i filestore är `<projekt-id>_<fil-id>` och katalogstrukturen i S3 är `<projekt-id>/<fil-id>`.

I det följande, `/srv/overleaf-s3-migration` används för att lagra filerna i den nya katalogstrukturen.

Vi kan använda `tar` för att skriva 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: ladda upp filerna

Beroende på vad du föredrar kan du använda minio mc S3-klienten eller aws cli för att ladda upp filerna till ditt S3-kompatibla objektlager.

**aws cli**

{% hint style="info" %}

* Här ska du ersätta `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` och `overleaf-chunks` med namnen på dina S3-bucketar.
* Ersätt också `/srv/overleaf-bind-mount` med den lokala sökvägen till `/var/lib/overleaf` bind-mounten. Som standard är detta `~/overleaf_data` i en docker-compose.yml-distribution och `<toolkit-checkout>/data/overleaf` när du använder 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 använder serveraliaset "s3" här; du kanske har valt ett annat namn.

{% 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: starta instansen som pekar mot S3

Lägg till alla S3-relaterade variabler i din konfiguration, som beskrivs i [Översikt över variabler](/on-premises/sv/konfiguration/overleaf-toolkit/s3.md#overview-of-variables) avsnittet i [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) installationsguiden.

För Docker Compose-distributioner kan du också ta bort bind-mounten för datakatalogen från avsnittet volumes.

{% hint style="success" %}
Behåll [bind-mounten av en temporär disk för tillfälliga filer](/on-premises/sv/support/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) kvar.
{% endhint %}

Du kan nu starta instansen och verifiera migreringen:

* kan förhandsgranska binära filer i editorn
* kan kompilera en PDF med bilder
* kan ladda upp nya filer

### Återställning

Du kan rulla tillbaka migreringen på ett smidigt sätt genom att utföra stegen i omvänd ordning:

1. Stäng ner instansen
2. Spegla tillbaka filerna genom att vända på ordningen för källa/mål
3. Skriv tillbaka nya filer till den lokala katalogen med en omvänd `transformering`
4. Starta om instansen med den gamla konfigurationen

{% code overflow="wrap" %}

```shell
# När du använder 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 använder 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 till 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örsta transformeringen tar bort mappen på översta nivån. Den andra transformeringen ändrar katalogstrukturen till en platt struktur. Jokertecknen säkerställer att endast filer extraheras, inte deras överordnade (projekt)mapp.
{% 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/sv/underhall/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.
