> 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/es/mantenimiento/s3-migration.md).

# Migración a S3

## Migración a S3

{% hint style="info" %}
Estas instrucciones son para la versión v5.x y posteriores. Si está siguiendo esta guía para una versión anterior, utilice `sharelatex` en lugar de `overleaf` en los nombres de ruta y `SHARELATEX_` prefijo en lugar de `OVERLEAF_` para las variables de entorno.
{% endhint %}

{% hint style="warning" %}
Clientes de Server Pro: póngase en contacto con soporte antes de migrar sus datos a S3.
{% endhint %}

{% hint style="success" %}
**¡Nos encantaría saber de usted!** Si desea compartir con nosotros cuántos archivos migró, su volumen total y cuánto tardó la migración, envíe un correo a [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Esta guía le guiará en la migración desde el almacenamiento en disco a un almacenamiento de objetos compatible con S3. Hace referencia a secciones del documento de introducción en la [Configuración de S3](/on-premises/es/configuracion/overleaf-toolkit/s3.md).

### Requisitos

* Un almacenamiento de objetos compatible con S3 con el que comunicarse, consulte [S3](/on-premises/es/configuracion/overleaf-toolkit/s3.md#s3-setup) para ver opciones
* Espacio libre en disco para migrar los datos existentes, aproximadamente el tamaño actual en disco
* Una ventana de mantenimiento para realizar la migración propiamente dicha
* Una copia de seguridad completa, incluida la configuración, para permitir su restauración

### Estime el tamaño de disco necesario para la migración

Podemos usar `du` para calcular el uso actual 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
```

Si no dispone de suficiente espacio en disco en el servidor actual, intente conectar otro disco al servidor.

{% hint style="info" %}
Los directorios de historial ya tienen la disposición correcta. Puede cargar directamente desde la carpeta de origen montada con bind, lo que no requiere espacio adicional en disco.
{% endhint %}

### Pasos de migración

#### Paso 0: apagar la instancia

Debemos asegurarnos de que todos los archivos de usuario/plantilla se migren. Lo mejor es apagar la instancia para evitar perder archivos recién cargados.

Consulte nuestra guía sobre cómo realizar una copia de seguridad consistente para el procedimiento de apagado.

#### Paso 1: reescribir la estructura de directorios

Necesitamos reescribir la estructura de directorios de los archivos del proyecto para subirlos a S3. La estructura de directorios para el almacenamiento local en filestore es `<id-del-proyecto>_<id-del-archivo>` y la estructura de directorios en S3 es `<id-del-proyecto>/<id-del-archivo>`.

A continuación, `/srv/overleaf-s3-migration` se usa para almacenar los archivos en la nueva estructura de directorios.

Podemos hacer uso de `tar` para reescribir la estructura:

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

#### Paso 2: subir los archivos

Según su preferencia, puede usar el cliente S3 minio mc o la CLI de aws para subir los archivos a su almacenamiento de objetos compatible con S3.

**CLI de aws**

{% hint style="info" %}

* Aquí debe reemplazar `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` y `overleaf-chunks` por los nombres de sus buckets de S3.
* También reemplace `/srv/overleaf-bind-mount` con la ruta local del `/var/lib/overleaf` montaje bind. De forma predeterminada, esto es `~/overleaf_data` en una implementación con docker-compose.yml y `<toolkit-checkout>/data/overleaf` cuando use el 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**

Aquí usamos el alias de servidor "s3"; es posible que haya elegido otro nombre.

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

#### Paso 3: inicie la instancia apuntando a S3

Añada todas las variables relacionadas con S3 a su configuración, como se detalla en la sección [Resumen de variables](/on-premises/es/configuracion/overleaf-toolkit/s3.md#overview-of-variables) de la [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) guía de configuración.

Para implementaciones con Docker Compose, también puede eliminar el montaje bind del directorio de datos de la sección de volúmenes.

{% hint style="success" %}
Por favor, mantenga [el montaje bind de un disco temporal para archivos efímeros](/on-premises/es/soporte/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) en su lugar.
{% endhint %}

Ahora puede iniciar la instancia y validar la migración:

* puede previsualizar archivos binarios en el editor
* puede compilar un PDF con imágenes
* puede cargar nuevos archivos

### Reversión

Puede revertir la migración de forma ordenada invirtiendo los pasos:

1. Apague la instancia
2. Vuelva a sincronizar los archivos invirtiendo la secuencia de origen/destino
3. Escriba de nuevo los archivos en el directorio local usando una `transformación`
4. Reinicie la instancia con la configuración antigua

{% code overflow="wrap" %}

```shell
# Cuando use la CLI de aws
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

# Cuando use 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
# Escribir archivos en Server CE/Server Pro local
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 primera transformación elimina la carpeta de nivel superior. La segunda transformación cambia la estructura de directorios a una plana. Los comodines garantizan que solo se extraigan los archivos, no sus carpetas padre (del proyecto).
{% 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/es/mantenimiento/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.
