> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrazione a S3

## Migrazione a S3

<Info>
  Queste istruzioni si riferiscono alla v5.x e successive. Se segui questa guida per una versione precedente, usa `sharelatex` invece di `overleaf` nei nomi dei percorsi e il prefisso `SHARELATEX_` invece di `OVERLEAF_` per le variabili d'ambiente. Per la v6 e successive, salta i comandi legacy relativi a `user_files`.
</Info>

<Check>
  <strong>Ci piacerebbe sentire la tua opinione!</strong> Se vuoi condividere con noi quanti file hai migrato, il loro volume complessivo e quanto tempo ha richiesto la migrazione, scrivi a [`ayaka-notes@outlook.com`](mailto:support@overleaf.com).
</Check>

Questa guida ti accompagnerà nella migrazione dallo storage su disco a uno storage a oggetti compatibile con S3. Fa riferimento a sezioni del documento introduttivo sulla [configurazione di S3](/it/on-premises/configuration/overleaf-toolkit/s3).

### Requisiti

* Uno storage a oggetti compatibile con S3 con cui comunicare; vedi [#s3-setup](/it/on-premises/configuration/overleaf-toolkit/s3#s3-setup "mention") per le opzioni
* Spazio libero su disco per migrare i dati esistenti, all'incirca pari alla dimensione attuale su disco
* Una finestra di manutenzione per eseguire la migrazione vera e propria
* Un backup completo, inclusa la configurazione, per poter eseguire un ripristino

### Stimare lo spazio su disco necessario per la migrazione

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

```shell theme={null}
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
```

Se sul server attuale non hai abbastanza spazio su disco disponibile, prova a collegare un altro disco al server.

<Info>
  Le directory della cronologia hanno già il layout corretto. Puoi caricarle direttamente dalla cartella sorgente montata in bind, senza bisogno di spazio su disco aggiuntivo.
</Info>

### Passaggi della migrazione

#### Passaggio 0: arrestare l'istanza

Dobbiamo assicurarci che tutti i file degli utenti e dei template vengano migrati. È meglio arrestare l'istanza per evitare di perdere i file caricati di recente.

Consulta la nostra guida sull'esecuzione di un backup coerente per la procedura di arresto.

#### Passaggio 1: riscrivere il layout delle directory

Dobbiamo riscrivere il layout delle directory dei file dei progetti per caricarli su S3. Il layout delle directory per lo storage locale nel filestore è `<project-id>_<file-id>`, mentre il layout in S3 è `<project-id>/<file-id>`.

Di seguito, `/srv/overleaf-s3-migration` viene usato per archiviare i file nel nuovo layout delle directory. Sostituisci `/srv/overleaf-bind-mount` con la directory dell'host montata su `/var/lib/overleaf`. Esegui i comandi di copia sull'host con i permessi di lettura e scrittura su queste directory; il container resta arrestato.

Possiamo usare `tar` per riscrivere il layout:

```shell theme={null}
mkdir -p /srv/overleaf-s3-migration/user_files \
         /srv/overleaf-s3-migration/template_files
tar --create --directory /srv/overleaf-bind-mount/data/user_files . \
| tar --extract --directory /srv/overleaf-s3-migration/user_files \
  --transform=sx_x/x
tar --create --directory /srv/overleaf-bind-mount/data/template_files . \
| tar --extract --directory /srv/overleaf-s3-migration/template_files \
  --transform=sx_x/xg
```

#### Passaggio 2: caricare i file

A seconda delle tue preferenze, puoi usare il client S3 minio mc o la aws cli per caricare i file sul tuo storage a oggetti compatibile con S3.

**aws cli**

<Info>
  * Qui devi 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 bind mount di `/var/lib/overleaf`. Per impostazione predefinita, è `~/overleaf_data` in un deployment docker-compose.yml e `<toolkit-checkout>/data/overleaf` quando usi il Toolkit.
</Info>

```shell wrap theme={null}
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
```

**minio mc**

Qui usiamo l'alias del server "s3"; tu potresti aver scelto un altro nome.

```shell wrap theme={null}
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
```

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

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

Mantieni il bind mount della directory dei dati: potrebbe contenere anche le chiavi di cifratura di Zotero o Mendeley, che non vengono migrate su S3.

<Check>
  Mantieni il [bind mount di un disco scratch per i file temporanei](/it/on-premises/support/troubleshooting#running-overleaf-with-an-nfs-filesystem).
</Check>

Ora puoi avviare l'istanza e convalidare la migrazione:

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

### Rollback

Puoi annullare la migrazione in modo ordinato eseguendo i passaggi al contrario:

1. Arresta l'istanza
2. Esegui il mirroring inverso dei file invertendo l'ordine di origine/destinazione
3. Riscrivi i file nella directory locale usando una `transform` inversa
4. Riavvia l'istanza con la vecchia configurazione

```shell wrap theme={null}
# When using 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

# When using 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
```

```shell theme={null}
# Write files into local Server CE/Server Pro
tar --create --directory /srv/overleaf-s3-migration/user_files . \
| tar \
      --extract \
      --keep-old-files \
      --directory /srv/overleaf-bind-mount/data/user_files \
      --transform=sx./xx --transform=sx/x_x \
      --wildcards '*/*/*'

tar --create --directory /srv/overleaf-s3-migration/template_files . \
| tar \
      --extract \
      --keep-old-files \
      --directory /srv/overleaf-bind-mount/data/template_files \
      --transform=sx./xx --transform=sx/x_xg \
      --wildcards '*/*/*/*/pdf-converted-cache/*' \
      --wildcards '*/*/*/*/pdf' \
      --wildcards '*/*/*/*/zip'
```

<Info>
  La prima transform rimuove la cartella di primo livello. La seconda transform trasforma il layout delle directory in uno piatto. I caratteri jolly assicurano che vengano estratti solo i file e non le loro cartelle padre (dei progetti).
</Info>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.