# Runbook de Recuperacion de Backups

## Alcance
Este runbook aplica al esquema actual del panel:
- Backups en `/home/www/backups`.
- Estrategia configurable: `full` o `incremental`.
- Incrementales creados con `tar --listed-incremental=<snapshot>`.
- Limpieza automatica por `backup_retention_days`.

## Importante sobre la limpieza actual
La limpieza fue ajustada a modo "chain-aware":
- Agrupa por cadenas `full + incrementales` segun orden cronologico.
- Conserva cadenas cuyo backup mas reciente cae dentro de la retencion.
- Conserva siempre la cadena mas reciente, aun si excede el umbral.
- Elimina cadenas completas fuera de retencion, no archivos sueltos.

## Nomenclatura
- Full: `backup_www_YYYYMMDD_HHMMSS.tar.gz`
- Incremental: `backup_www_inc_YYYYMMDD_HHMMSS.tar.gz`

## Politica recomendada
1. Si usas incremental, configura:
- Full periodico (por ejemplo semanal).
- Incrementales diarios.
- Retencion minima: 14 dias (mejor 21 o 30 en produccion).

2. Si necesitas retencion de solo 2 dias, usa preferiblemente:
- Estrategia `full`.
- Sin depender de cadena incremental larga.

3. Regla operativa:
- Nunca borres manualmente incrementales intermedios de una cadena activa.

## Procedimiento de restauracion (entorno de prueba)
1. Identificar punto objetivo de recuperacion.
2. Crear directorio de restauracion:

```bash
mkdir -p /home/www/restore_test
```

3. Seleccionar cadena correcta:
- Un full base anterior al punto objetivo.
- Todos los incrementales posteriores, en orden cronologico, hasta el punto objetivo.

4. Restaurar en orden:

```bash
# 1) full base
sudo tar -xzf /home/www/backups/backup_www_YYYYMMDD_HHMMSS.tar.gz -C /home/www/restore_test

# 2) incrementales (en orden de fecha)
sudo tar -xzf /home/www/backups/backup_www_inc_YYYYMMDD_HHMMSS.tar.gz -C /home/www/restore_test
sudo tar -xzf /home/www/backups/backup_www_inc_YYYYMMDD_HHMMSS.tar.gz -C /home/www/restore_test
```

5. Validar restauracion:

```bash
# ejemplo de validacion basica
ls -lah /home/www/restore_test
```

6. Solo despues de validar en prueba, planificar restauracion en produccion.

## Procedimiento de restauracion (produccion)
1. Ventana de mantenimiento aprobada.
2. Backup de seguridad del estado actual antes de restaurar.
3. Restaurar cadena full + incrementales en orden.
4. Validar permisos y propietarios:

```bash
# ejemplo (ajustar usuario/grupo segun servidor)
sudo chown -R apache:apache /home/www
```

5. Validar servicios y aplicacion.

## Comprobaciones recomendadas periodicas
1. Prueba mensual de restauracion completa en ruta alterna.
2. Verificacion de espacio en disco para retencion definida.
3. Verificacion de copias remotas (si estan habilitadas).

## Respuesta directa sobre "borrado cada 2 dias"
- Con incremental: ahora es tecnicamente viable porque la limpieza es por cadena completa.
- Aun asi, 2 dias deja poco historial para recuperaciones tardias.
- Recomendacion operativa: 7-14 dias como minimo en produccion.

## Ajuste sugerido para tu caso
- Opcion A (mas segura): `backup_strategy=incremental`, `backup_retention_days=14`.
- Opcion B (historial corto): `backup_strategy=full`, `backup_retention_days=2`.

Si se desea mantener incremental con retencion corta, conviene mejorar el limpiador para que sea "chain-aware" (conserve base full y su cadena dependiente).