> 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/it/manutenzione/s3-migration.md).

# Migrazione S3

## Migrazione S3

{% hint style="info" %}
Queste istruzioni sono per la v5.x e versioni successive. Se state seguendo questa guida per una versione precedente, utilizzate `sharelatex` invece di `overleaf` nei nomi dei percorsi e `SHARELATEX_` prefisso invece di `OVERLEAF_` per le variabili d'ambiente.
{% endhint %}

{% hint style="warning" %}
Clienti Server Pro: contattate il supporto prima di migrare i vostri dati su S3.
{% endhint %}

{% hint style="success" %}
**Ci piacerebbe sentirvi!** Se desiderate condividere con noi quanti file avete migrato, il loro volume complessivo e quanto tempo ha richiesto la migrazione, inviate un'email a [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Questa guida vi accompagnerà nella migrazione dall'archiviazione su disco a uno storage a oggetti compatibile con S3. Fa riferimento alle sezioni del documento introduttivo sulla [Configurazione S3](/on-premises/it/configurazione/overleaf-toolkit/s3.md).

### Requisiti

* Uno storage a oggetti compatibile con S3 a cui connettersi, vedi [S3](/on-premises/it/configurazione/overleaf-toolkit/s3.md#s3-setup) per le opzioni
* Spazio libero su disco per migrare i dati esistenti, pari a circa la dimensione attuale su disco
* Una finestra di manutenzione per eseguire la migrazione vera e propria
* Un backup completo, inclusa la configurazione, per consentirne il ripristino

### Stima della dimensione del disco necessaria per la migrazione

Possiamo utilizzare `du` per calcolare l'utilizzo attuale del disco:

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

Nel caso in cui non abbiate spazio su disco sufficiente disponibile sul server attuale, provate ad aggiungere un altro disco al server.

{% hint style="info" %}
Le directory della cronologia hanno già il layout corretto. Potete caricare direttamente dalla cartella sorgente montata tramite bind, il che non richiede spazio aggiuntivo su disco.
{% endhint %}

### Passaggi della migrazione

#### Fase 0: arrestare l'istanza

Dobbiamo assicurarci che tutti i file utente/modello vengano migrati. È meglio arrestare l'istanza per evitare di perdere i file caricati di recente.

Consultate la nostra guida su come eseguire un backup consistente per la procedura di arresto.

#### Fase 1: riscrivere la struttura delle directory

Dobbiamo riscrivere la struttura delle directory dei file di progetto per caricarli su S3. La struttura delle directory per l'archiviazione locale in filestore è `<project-id>_<file-id>` e la struttura delle directory in S3 è `<project-id>/<file-id>`.

Di seguito, `/srv/overleaf-s3-migration` è usato per archiviare i file nel nuovo layout delle directory.

Possiamo fare uso di `tar` per riscrivere la struttura:

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

#### Fase 2: caricare i file

A seconda delle vostre preferenze, potete usare il client S3 minio mc o aws cli per caricare i file nel vostro archivio di oggetti compatibile con S3.

**aws cli**

{% hint style="info" %}

* Qui dovreste sostituire `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` e `overleaf-chunks` con i nomi dei vostri bucket S3.
* Sostituite anche `/srv/overleaf-bind-mount` con il percorso locale del `/var/lib/overleaf` bind-mount. Per impostazione predefinita, è `~/overleaf_data` in una distribuzione docker-compose.yml e `<toolkit-checkout>/data/overleaf` quando si usa il 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**

Qui stiamo usando l'alias server "s3", potreste aver scelto un altro nome.

{% 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 %}

#### Fase 3: avviare l'istanza puntando a S3

Aggiungete tutte le variabili relative a S3 alla vostra configurazione, come dettagliato nella [Panoramica delle variabili](/on-premises/it/configurazione/overleaf-toolkit/s3.md#overview-of-variables) sezione della [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) guida di configurazione.

Per le distribuzioni Docker Compose, potete anche rimuovere il bind-mount per la directory dei dati dalla sezione volumes.

{% hint style="success" %}
Mantenete in posizione il [bind-mount di un disco temporaneo per i file effimeri](/on-premises/it/supporto/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) in posizione.
{% endhint %}

Ora potete avviare l'istanza e verificare la migrazione:

* può visualizzare in anteprima i file binari nell'editor
* può compilare un PDF con immagini
* può caricare nuovi file

### Annullamento

Potete annullare la migrazione in modo ordinato invertendo i passaggi:

1. Arrestate l'istanza
2. Specchiate i file al contrario invertendo la sequenza sorgente/destinazione
3. Riscrivete i nuovi file nella directory locale usando una inversa `trasformazione`
4. Riavviate l'istanza con la vecchia configurazione

{% code overflow="wrap" %}

```shell
# Quando si usa 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

# Quando si usa 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
# Scrivere i file nel Server CE/Server Pro locale
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" %}
La prima trasformazione rimuove la cartella di livello superiore. La seconda trasformazione cambia la struttura delle directory in una piatta. I caratteri jolly garantiscono che vengano estratti solo i file, non le cartelle genitore (del progetto).
{% 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/it/manutenzione/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.
