> 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/soporte/support-guides/full-project-history-migration.md).

# Migración del historial completo del proyecto

## Migración completa del historial del proyecto

El `3.5.x` la versión de la Community Edition incluye la [función de Historial completo del proyecto](https://www.overleaf.com/learn/latex/Using_the_History_feature) que ya está disponible en nuestra oferta SaaS, [overleaf.com](http://overleaf.com/)

Después de actualizar tu instancia a Overleaf CE `3.5.13`, todos los proyectos nuevos usarán Historial completo del proyecto de forma predeterminada. Los proyectos existentes seguirán usando el sistema de Historial heredado, hasta que se migren.

{% hint style="info" %}
Si actualizas a `3.5.13` y decides volver a una versión anterior, entonces debes restaurar desde una copia de seguridad completa del sistema. El historial de los proyectos creados en `3.5.13` no es compatible con versiones anteriores de Overleaf CE.
{% endhint %}

El nuevo Historial completo del proyecto aporta varias mejoras para los usuarios:

* Hace seguimiento de los cambios en archivos binarios, lo cual no está soportado en el sistema heredado.
* Hay soporte para versiones etiquetadas.
* En general, el sistema es más robusto y hay menos riesgo de pérdida de datos.

Consulta [documentación de Historial completo del proyecto](https://www.overleaf.com/learn/latex/Using_the_History_feature) para más información sobre el historial completo del proyecto.

### Migración de proyectos existentes

{% stepper %}
{% step %}

#### Crear una copia de seguridad

Crear una [copia de seguridad](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) completa de tu instancia con una instantánea consistente de los **mongo**, **redis** y **sharelatex** directorios.
{% endstep %}

{% step %}

#### Actualiza

Actualiza la versión de la imagen sharelatex/sharelatex a 3.5.13.

Toolkit: usa el `$ bin/upgrade` script para actualizar el toolkit a la versión más reciente y editar **config/version** a 3.5.13.
{% endstep %}

{% step %}

#### Inicie la instancia

Idealmente, querrás evitar que los usuarios accedan a tu instancia mientras tiene lugar la migración, para evitar la pérdida de datos en caso de que necesites restaurar tu copia de seguridad. Consulta [Migración sin conexión](https://github.com/overleaf/overleaf/wiki/Full-Project-History-Migration/#offline-migration) para obtener más información sobre cómo hacerlo.
{% endstep %}

{% step %}

#### Espera hasta que todos los servicios estén en funcionamiento

Espera hasta que todos los servicios estén en funcionamiento (consulta el comando abajo)

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
web sharelatex está activo (api)%
```

{% endcode %}
{% endstep %}

{% step %}

#### Ejecuta el script de migración

{% code overflow="wrap" %}

```bash
# Usuarios de Overleaf Toolkit:
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; VERBOSE_LOGGING=true node scripts/history/migrate_history.js --force-clean --fix-invalid-characters --convert-large-docs-to-file"

# usuarios de legacy docker-compose.yml:
$ docker exec sharelatex /bin/bash -c "cd /overleaf/services/web; VERBOSE_LOGGING=true node scripts/history/migrate_history.js --force-clean --fix-invalid-characters --convert-large-docs-to-file"
```

{% endcode %}

`--force-clean` elimina los datos del historial de proyectos parcialmente migrados en el nuevo sistema; esto permite reintentar la migración de proyectos individuales que fallaron en intentos anteriores;

`--fix-invalid-characters` reemplaza caracteres no imprimibles que no son compatibles con el nuevo sistema de historial;

`--convert-large-docs-to-file` convierte documentos que superan el umbral de 2 MB de tamaño editable en un archivo no editable)

La salida debería verse así:

```bash
Proyectos migrados :  1
Proyectos totales  :  51
Proyectos restantes:  51
Total de registros de historial a migrar: 98
Iniciando migración...
Migrando proyecto: 63d29b5772dd80015a81bffe
resultado de la migración { upgraded: true, historyType: 'NoneWithoutConversion' }
Migrando proyecto: 63d29c2e72dd80015a81c0a2
resultado de la migración { upgraded: true, historyType: 'NoneWithoutConversion' }

// …

Migración completa
==================
Proyectos migrados:  51
Proyectos fallidos:  0
Hecho.
```

Si la migración tiene éxito, obtendrás un código de salida de `0`, y las últimas líneas indicarán que no hubo fallos:

```bash
Proyectos fallidos:  0
Hecho.
```

Puedes volver a abrir el acceso para tus usuarios (consulta el siguiente paso). Si hay fallos, consulta la sección de resolución de problemas más abajo. Todavía puedes volver a abrir el sitio si los problemas no se corrigen de inmediato, y los proyectos no migrados permanecerán en el sistema de historial heredado.
{% endstep %}

{% step %}

#### Volver a abrir el sitio

Si elegiste realizar una migración sin conexión, entonces tendrás que volver a abrir el sitio. Si todavía has iniciado sesión, deberás:

1. Haga clic en el **Administrador** botón y elige **Administrar el sitio**
2. Haga clic en el **Abrir/Cerrar el editor** pestaña
3. Haga clic en el **Reabrir el editor** botón

Si has cerrado el navegador, entonces tendrás que reiniciar el sitio con `$ bin/up`.
{% endstep %}
{% endstepper %}

#### Migración sin conexión

Para evitar que los usuarios puedan iniciar sesión mientras se ejecuta el script de migración del historial, sigue estos pasos:

* Inicia sesión en tu instancia de Overleaf con una cuenta de administrador
* Haga clic en el **Administrador** botón y elige **Administrar el sitio**
* Haga clic en el **Abrir/Cerrar el editor** pestaña
* Haga clic en el **Cerrar el editor** botón
* Haga clic en el **Desconectar a todos los usuarios** botón

Una vez hecho esto, si hay usuarios conectados serán redirigidos a la página de mantenimiento, y cualquier nuevo usuario que visite la página de inicio de sesión verá la página de mantenimiento y **no** podrá iniciar sesión.

#### Migración en línea

Es posible ejecutar los scripts de migración mientras la aplicación sigue en funcionamiento. Hay algunas consideraciones que tener en cuenta:

* El proceso de migración consume mucha CPU; deberías supervisar el uso de recursos mientras el script se ejecuta.
* Con un valor alto de `--concurrency` , el bucle de eventos en algunos servicios (`track-changes` en particular) podría experimentar cierto bloqueo, lo que llevaría a una experiencia de usuario degradada. Recomendamos comenzar con el valor predeterminado `--concurrency=1` .
* Puedes detener el script en cualquier momento. Al iniciarlo de nuevo, la migración se reanudará donde la dejaste. Esto es útil en caso de que prefieras ejecutar la migración en horas de menor actividad (por ejemplo, por la noche).

Nuestra recomendación es cerrar el sitio y ejecutar la migración sin conexión en una ventana de mantenimiento cuando el número de proyectos sea inferior a 1000 proyectos (`db.projects.count()`). Si el número de proyectos es grande, puedes ejecutar el script y supervisar su progreso, y luego decidir si continuar ejecutándolo en línea o sin conexión según tu caso particular.

#### Limpiar los datos heredados del historial

Se añadió un script para limpiar los datos heredados del historial en Server Pro `3.5.6`, `4.0.6` y `4.1.0`.

{% code overflow="wrap" %}

```bash
bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/history/clean_sl_history_data.js"
```

{% endcode %}

El script puede ejecutarse después de que todos los proyectos hayan sido migrados. También puede usarse para liberar algo de espacio mientras se realiza una migración en línea.

{% hint style="info" %}
En Server Pro antes de la versión 3.5.13, el script elimina el contenido de `docHistory` y `docHistoryIndex` las colecciones. MongoDB no libera espacio en disco después de eliminar documentos; en su lugar, reutilizará ese espacio para futuros documentos en la misma colección. Nada volverá a escribir en estas colecciones después de la migración del historial, por lo que el espacio en disco permanecerá sin usar.

Si quieres volver a poner ese espacio en disco a disposición, puedes actualizar a Server Pro 3.5.13 (si sigues usando la versión 3.x) o a Server Pro 4.2.5 (si usas la versión 4.x) y volver a ejecutar el script de limpieza.

El script de limpieza, tal como se incluye en Server Pro, en las últimas versiones de parche de `3.5.x` y las últimas `4.x.x` eliminan las colecciones como paso final.

Es seguro volver a ejecutar el script de limpieza.
{% endhint %}

### Solución de problemas

Añadiremos aquí consejos para la resolución de problemas. Ten en cuenta que, aunque normalmente solo ofrecemos soporte a clientes de Server Pro, dada la naturaleza de esta migración, también haremos todo lo posible por ayudar a los clientes de CE que experimenten problemas específicos de la migración al historial completo del proyecto.

Si falla el script de migración al historial completo del proyecto (es decir, termina con un error o muestra un número distinto de cero de proyectos fallidos), envía los siguientes detalles a nuestro equipo de soporte por correo electrónico [support+historymigration@overleaf.com](mailto:support+historymigration@overleaf.com?subject=Full%20project%20history%20migration%20problem\&body=Instance%20Type%3A%20CE%20or%20Server%20Pro%20%28delete%20as%20appropriate%29%0A%0AInstallation%20Type%3A%20Overleaf%20toolkit%20or%20docker-compose.yml%20or%20other%20%28delete%20as%20appropriate%29%0A%0AScript%20output%3A%0A%0Abin%2Fdoctor%20output%20%28if%20using%20toolkit%29%3A%0A), detallando:

Asunto: Problema de migración al historial completo del proyecto

* Tipo de instancia: CE o Server Pro (eliminar según corresponda)
* Tipo de instalación: Overleaf Toolkit o `docker-compose.yml` u otro (eliminar según corresponda)
* Versión: 3.5.x (toolkit: `$ cat config/version`)
* Salida del script de migración (que debería estar ubicada en el contenedor en `/overleaf/services/web`)
* Proyectos migrados: (según la salida del script de migración)
* Proyectos totales: (según la salida del script de migración)
* Proyectos restantes: (según la salida del script de migración)
* Duración de la migración:
* `bin/doctor` salida (al usar Toolkit)
* Versión del toolkit: `$ git rev-parse HEAD` (al usar Toolkit)

Considera adjuntar los archivos de registro de los `history-v1`, `project-history` y `track-changes` servicios al correo electrónico. Puedes encontrarlos en `/var/log/sharelatex` dentro del `sharelatex` contenedor y exportarlos así:

```bash
$ docker cp sharelatex:/var/log/sharelatex/history-v1.log history-v1.log
$ docker cp sharelatex:/var/log/sharelatex/project-history.log project-history.log
$ docker cp sharelatex:/var/log/sharelatex/track-changes.log track-changes.log
```

Por favor, elimina cualquier información sensible de los archivos de registro antes de adjuntarlos.

#### Encontrar árboles de archivos dañados

La migración puede fallar en proyectos que tienen un árbol de archivos mal formado (por ejemplo, cuando los nombres de archivo están vacíos). Puedes encontrar una lista de estos problemas usando el `find_malformed_filetrees` script que comprueba todos los proyectos en la base de datos:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/find_malformed_filetrees.js"
RUTA INCORRECTA: 123456789012345678901234 rootFolder.0.1.2.3
RUTA INCORRECTA: 123456789012345678901234 rootFolder.0.4.5.6
...
```

{% endcode %}

Para corregir las rutas inválidas, usa el `fix_malformed_filetree` script, ejecutando el comando una vez por cada ruta incorrecta:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/fix_malformed_filetree.js 123456789012345678901234 rootFolder.0.1.2.3"
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/fix_malformed_filetree.js 123456789012345678901234 rootFolder.0.4.5.6"
...
```

{% endcode %}

#### Degradar proyectos desde el historial completo del proyecto al historial heredado

Si hay un proyecto que ha sido migrado al historial completo del proyecto pero quieres volver al historial heredado, usa el `downgrade_project` script de la siguiente manera:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; PROJECT_ID=YOUR
```

{% endcode %}


---

# 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/soporte/support-guides/full-project-history-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.
