> 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/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, por favor use `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: por favor, 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 tiempo tomó la migración, envíe un correo a [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Esta guía le llevará a través de la migración del almacenamiento en disco a un almacenamiento de objetos compatible con S3. Hace referencia a secciones del documento de introducción sobre 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 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 real
* Una copia de seguridad completa, incluida la configuración, para permitir restaurar desde ella

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

En caso de que no tenga suficiente espacio en disco disponible en el servidor actual, intente conectar otro disco al servidor.

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

### Pasos de la migración

#### Paso 0 apagar la instancia

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

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 `<project-id>_<file-id>` y la estructura de directorios en S3 es `<project-id>/<file-id>`.

En lo siguiente, `/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 aws cli para subir los archivos a su almacenamiento de objetos compatible con S3.

**aws cli**

{% 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` bind-mount. De forma predeterminada, esta es `~/overleaf_data` en una implementación docker-compose.yml y `<toolkit-checkout>/data/overleaf` al usar 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í estamos usando el alias del servidor "s3"; quizá usted 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 iniciar la instancia apuntando a S3

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

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

{% hint style="success" %}
Por favor, mantenga el [bind-mount 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 subir archivos nuevos

### Reversión

Puede revertir la migración de forma segura deshaciendo los pasos:

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

{% code overflow="wrap" %}

```shell
# Al usar 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

# Al usar 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 el servidor local 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" %}
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 archivos, no sus carpetas padre (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://overleaf-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.
