# Copias de seguridad

Copia completa y semanal de cada VPS sin apagarlo, con 4 copias guardadas, copia a mano y descarga con enlace de 72 horas.

Fuente: https://ardumaker.com/docs/backups/

- Categoría: Servidores e infraestructura
- Estado: Disponible
- Requisitos: Un VPS de la empresa (encendido o apagado); Para ver las copias: acceso al VPS; Para pedir una copia, una descarga o cambiar la exclusión: ser admin de la empresa
- Herramientas MCP (Solo leen): `listar_backups_vps`, `ver_backup_vps`, `ver_estado_descarga_backup_vps`
- Herramientas MCP (Destructivas): `crear_backup_vps`, `crear_descarga_backup_vps`, `configurar_backups_vps`

## ¿Qué permite hacer?

- Tener una copia automática de cada VPS cada 7 días, sin apagarlo.
- Pedir una copia fuera de horario.
- Descargar una copia completa en un `.tar` con un enlace que vence a las 72 horas.
- Excluir un VPS de las copias automáticas, o volver a incluirlo.
- Conservar para siempre la última copia de un VPS que se elimina.

## ¿Cuándo conviene usarlo?

- Antes de un cambio grande (migrar una base, actualizar el sistema): pedir una copia a mano.
- Para llevarse una imagen completa del VPS fuera de ArduMaker.
- Para un VPS de pruebas que no hace falta respaldar: excluirlo.

## ¿Cómo funciona en ArduMaker?

### El ciclo

- Cada VPS activo o apagado entra en el ciclo cada 7 días.
- Se toma un snapshot en caliente: el VPS sigue funcionando.
- Las copias se procesan de a una, porque una copia carga el disco y la red del host, que atiende a otros VPS.
- Si una copia falla, se reintenta con espera creciente (30 minutos, 1 hora, 2 horas… hasta 24 horas).
- Se conservan las últimas 4 copias; las anteriores se borran solas.
- Antes de guardarla se verifica la integridad; una copia que no coincide se descarta.

### Copia a mano y descarga

1. Un admin pide la copia (`crear_backup_vps`). No corre en el pedido: queda en cola y la toma el proceso de copias; tarda minutos.
2. Una vez completada, un admin pide la descarga (`crear_descarga_backup_vps`). La plataforma prepara el archivo y envía por correo un enlace a quien la pidió.
3. El estado de la descarga pasa por `pending`, `staging` y `ready` (o `expired`, `failed`). Con `ready` aparece la `url`.
4. El enlace vence a las 72 horas.

> **PELIGRO:** El enlace de descarga es la credencial de la imagen completa del VPS: discos, claves y bases. Hay que entregárselo solo a quien lo pidió.

## ¿Qué cambia realmente?

- Nada cambia dentro del VPS: el snapshot temporal se borra al terminar, también si falla.
- La copia queda en almacenamiento de ArduMaker, fuera del host del VPS.
- Al eliminar un VPS, su última copia se guarda para siempre; si esa copia no se puede hacer, el VPS no se borra y queda detenido con una alerta.
- Excluir un VPS deja de copiarlo; las copias existentes quedan, pero dejan de renovarse.

## Qué hay en una copia

Un único `.tar`, porque las piezas sueltas no restauran nada:

| Archivo | Qué contiene |
| --- | --- |
| `LEEME.md` | Cómo restaurar a mano, con el nombre del VPS y sus dominios |
| `instancia.tar.gz` | La instancia completa, con sus snapshots y sus redirecciones de puerto |
| `nginx/` | La configuración de nginx de los dominios del VPS en el host |
| `letsencrypt/` | Los certificados de los dominios propios |
| `manifiesto.json` | Plan, dominios, repositorios y empresa; los dominios sin certificado en la copia, en `ssl_domains_excluidos` |
| `SHA256SUMS` | Sumas para detectar corrupción parcial |

Los certificados de la plataforma (zona de ArduMaker) no viajan en la copia: quien restaure en otro lado necesita uno propio. No hay una herramienta para restaurar automáticamente: el `LEEME.md` explica el procedimiento manual.

## Esquema

**Una copia, de punta a punta**

```text
Snapshot en caliente (el VPS sigue andando)
  ↓
Exportación (instancia + nginx + certificados + manifiesto)
  ↓
Verificación (sumas de control)
  ↓
Almacenamiento de ArduMaker (se guardan las últimas 4)
  ↓
Descarga (opcional) (enlace por correo, 72 h)
```

## Resultado esperado

- `listar_backups_vps` devuelve las copias de la más nueva a la más vieja, con estado, tamaño, fecha y si hay una descarga preparada.
- `ver_backup_vps` muestra qué contiene cada copia según su manifiesto.
- Un miembro ve solo las copias completadas; un admin de la empresa ve también los intentos fallidos, pero no el motivo técnico, que habla de infraestructura compartida.

```bash
sha256sum -c SHA256SUMS
```

## Errores y resolución

| Respuesta | Causa | Qué hacer |
| --- | --- | --- |
| 400 VPS excluido | El VPS está excluido de las copias | Incluirlo con `configurar_backups_vps` |
| 409 | Ya hay una copia en cola o corriendo | Esperar a que termine |
| 429 | Se pidió otra copia hace menos de 60 minutos, o hay 3 descargas vivas en la empresa | Esperar, o bajar o dejar vencer descargas |
| 400 al pedir descarga | La copia no está completada o no tiene archivo | Elegir una copia completada |
| 404 `Backup not found` | No existe, o es un intento fallido que un miembro no puede ver | Pedírselo a un admin |

Pedir la descarga dos veces devuelve la misma mientras esté viva. `crear_backup_vps` y `crear_descarga_backup_vps` aceptan `idempotency_key`. Borrar una copia no se puede desde MCP.

## Relación con MCP

Sí, en los perfiles `/mcp` y `/mcp/vps`.

| Herramienta | Tipo | Permiso |
| --- | --- | --- |
| `listar_backups_vps`, `ver_backup_vps` | Lectura | Acceso al VPS |
| `ver_estado_descarga_backup_vps` | Lectura | Admin (la respuesta trae el enlace) |
| `crear_backup_vps` | Escritura | Admin; una por hora por VPS |
| `crear_descarga_backup_vps` | Escritura (dato sensible) | Admin |
| `configurar_backups_vps` | Escritura | Admin |

No hay herramienta para borrar copias: es irreversible y deja al VPS con un respaldo menos. Referencia en [/mcp/docs](https://ardumaker.com/mcp/docs) y ejemplos en [/mcp/vps](https://ardumaker.com/mcp/vps).

## Funciones relacionadas

- [Servidores VPS](https://ardumaker.com/docs/vps/)
- [Certificados SSL](https://ardumaker.com/docs/ssl/)
- [Nginx](https://ardumaker.com/docs/nginx/)
- [Tareas programadas](https://ardumaker.com/docs/cron/)
- [Planes de VPS](https://ardumaker.com/docs/planes-vps/)
