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

# Migrazione S3

## Migrazione S3

{% hint style="info" %}
Queste istruzioni sono per la v5.x e versioni successive. Se stai seguendo questa guida per una versione precedente, usa `sharelatex` invece di `overleaf` nei nomi dei percorsi e `SHARELATEX_` il 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 sentirti!** Se desideri condividere con noi quanti file hai migrato, il loro volume complessivo e quanto è durata la migrazione, invia un'e-mail a [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

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

### Requisiti

* Un object storage compatibile con S3 con cui interagire, vedi [S3](/on-premises/it/configurazione/overleaf-toolkit/s3.md#s3-setup) per le opzioni
* Spazio libero su disco per migrare i dati esistenti, circa la dimensione attuale su disco
* Una finestra di manutenzione per eseguire effettivamente la migrazione
* Un backup completo, inclusa la configurazione, per consentire il ripristino da esso

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

Possiamo usare `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 disponga di spazio su disco sufficiente disponibile sul server attuale, prova ad aggiungere un altro disco al server.

{% hint style="info" %}
Le directory della cronologia hanno già la struttura corretta. Puoi caricare direttamente dalla cartella sorgente montata tramite bind, che non richiede ulteriore spazio su disco.
{% endhint %}

### Passaggi della migrazione

#### Passo 0 spegnere l'istanza

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

Consulta la nostra guida su come eseguire un backup consistente per la procedura di spegnimento.

#### Passo 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` viene usato per memorizzare i file nella nuova struttura delle directory.

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

#### Passo 2 caricare i file

A seconda delle tue preferenze, puoi usare il client S3 minio mc oppure aws cli per caricare i file nel tuo object storage compatibile con S3.

**aws cli**

{% hint style="info" %}

* Qui dovresti sostituire `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` e `overleaf-chunks` con i nomi dei tuoi bucket S3.
* Sostituisci 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 del server "s3", potresti 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 %}

#### Passo 3 avviare l'istanza puntando a S3

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

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

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

Ora puoi 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

### Ripristino

Puoi annullare la migrazione in modo ordinato invertendo i passaggi:

1. Spegni l'istanza
2. Rispecchia di nuovo i file invertendo la sequenza di origine/destinazione
3. Riscrivi i nuovi file nella directory locale usando un inverse `transform`
4. Riavvia l'istanza con la vecchia configurazione

{% code overflow="wrap" %}

```shell
# Quando usi 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 usi 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
# Scrivi 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 rendendola piatta. I caratteri jolly assicurano che vengano estratti solo i file, non le loro cartelle padre (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://ayakaleaf-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.
