> 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/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 istället för `OVERLEAF_` för miljövariabler.
{% endhint %}

{% hint style="warning" %}
Server Pro-kunder: Kontakta supporten 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 tid migreringen tog, mejla [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

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

### Krav

* Ett S3-kompatibelt objektlager att kommunicera med, 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 genomföra själva migreringen
* En fullständig säkerhetskopia, inklusive konfigurationen, för att kunna återställa från den

### Beräkna det diskutrymme som behövs för migreringen

Vi kan använda `du` för att beräkna den aktuella diskanvändningen:

```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 ledigt diskutrymme på den aktuella servern, försök att ansluta en annan disk till servern.

{% hint style="info" %}
Historikkatalogerna har redan rätt struktur. Du kan ladda upp direkt från den bind-monterade källmappen, vilket inte kräver något extra diskutrymme.
{% endhint %}

### Migreringssteg

#### Steg 0 stäng av instansen

Vi måste se till att alla användar-/mallfiler migreras. Det är bäst att stänga av instansen för att undvika att nyligen uppladdade filer missas.

Se vår guide om att utföra 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 kunna 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 används `/srv/overleaf-s3-migration` 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 S3-klienten minio mc eller aws cli för att ladda upp filerna till ditt S3-kompatibla objektlager.

**aws cli**

{% hint style="info" %}

* Här bör du ersätta `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` och `overleaf-chunks` med namnen på dina S3-buckets.
* Ersätt också `/srv/overleaf-bind-mount` med den lokala sökvägen för `/var/lib/overleaf` bind-mounten. Som standard är detta `~/overleaf_data` i en docker-compose.yml-distribution och `<toolkit-checkout>/data/overleaf` när Toolkit används.
  {% 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 med S3 som mål

Lägg till alla S3-relaterade variabler i din konfiguration, enligt beskrivningen 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) konfigurationsguiden.

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

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

Du kan nu starta instansen och verifiera migreringen:

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

### Återställning

Du kan återställa migreringen smidigt genom att göra stegen i omvänd ordning:

1. Stäng av instansen
2. Spegelvänd filerna genom att vända ordningen på 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 aws cli används
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 minio mc används
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å toppnivå. Den andra transformeringen ändrar katalogstrukturen till en platt struktur. Jokertecknen säkerställer att endast filer extraheras, inte deras överordnade (projekt-)mappar.
{% 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/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.
