Tutorial

Probar la restauración de la copia de un cliente: procedimiento

Seguridad y monitorización11 min de lectura9 pasos

Una copia de seguridad que existe no es una copia que se pueda volver a leer, y la diferencia se descubre el día del incidente, delante del cliente. Esta guía va dirigida a las agencias que gestionan una cartera de sitios y deben poder responder a "demuestren que saben restaurar". Describe un ejercicio completo, manual y trimestral, en un VPS de prueba desechable: restauración desde el repositorio real, cronómetro del RTO, cálculo del RPO constatado y registro fechado entregado al cliente. El control automático con archivo centinela se trata en otra guía; aquí se produce la prueba.

Contenido· Esta prueba no es el control automático: lo que aporta1/13
  1. 01Esta prueba no es el control automático: lo que aporta
  2. 02Lo que demuestra el ejercicio y la copia sola no demuestra
  3. 03Preparar la prueba: alcance, máquina desechable, esfuerzo
  4. 04El procedimiento en nueve pasos
  5. 05El cronómetro: RTO y RPO constatados
  6. 06El registro de prueba: campos que rellenar
  7. 07Comandos de referencia por herramienta
  8. 08Trampas de la restauración, con su síntoma
  9. 09Resolución de problemas: errores vistos durante un ejercicio
  10. 10La contraseña del repositorio nunca vive sola en el servidor
  11. 11El registro entregado al cliente: una página y lo que no se probó
  12. 12Lado contractual: lo que debe nombrar la cláusula de copias
  13. 13Hacer facturable la prueba: un argumento de venta, no una carga

Esta prueba no es el control automático: lo que aporta

La guía sobre la estrategia 3-2-1 con Restic y S3 describe un control automático: un archivo centinela restaurado cada semana, que avisa cuando la cadena de copias se rompe. Es útil y conviene conservarlo. Pero responde a "¿se puede leer el repositorio?", no a "¿vuelve a funcionar el sitio del cliente y en cuánto tiempo?". Restaurar un archivo de unos pocos bytes no dice nada de una base de datos, de los archivos subidos, de la versión de PHP esperada ni de los secretos ausentes.

El ejercicio de esta guía restaura un sitio completo, a mano, en una máquina nueva, y extrae tres mediciones: una duración, la antigüedad de los datos y una lista de anomalías. Los dos mecanismos no compiten. El control automático detecta el fallo cada semana; el ejercicio trimestral demuestra la recuperación, con firma y fecha. Esa es la prueba que un cliente, una licitación o una auditoría acaba pidiendo.

Tampoco debe confundirse con el control de restauración de la lista de auditoría mensual de un VPS de cliente: ese verifica cada mes que se restaura un archivo o una base de datos; el ejercicio trimestral de esta guía vuelve a poner en marcha un sitio entero, cronómetro en mano.

Lo que demuestra el ejercicio y la copia sola no demuestra

  • El repositorio se lee sin el servidor original — la restauración parte del repositorio remoto, con secretos guardados en otro lugar, nunca del disco del sitio.
  • El sitio arranca de verdad — la página de inicio, el acceso a la administración y el último contenido en base de datos responden en la máquina nueva.
  • El RTO se mide, no se supone — una duración constatada sustituye la estimación "más o menos una hora".
  • El RPO cumple su promesa — la diferencia entre el incidente simulado y la instantánea restaurada se compara con lo que anuncia el contrato.
  • Los accesos están en buenas manos — la prueba revela quién guarda realmente la contraseña y las claves del repositorio.
  • Existe una prueba — un registro fechado y firmado, entregado al cliente, sirve de argumento comercial y de protección ante un litigio.

Preparar la prueba: alcance, máquina desechable, esfuerzo

Elija un sitio por cliente y por trimestre, alternando perfiles: un sitio apoyado en una base de datos, otro con archivos subidos voluminosos, un tercero con tareas programadas. Antes de empezar, reúna tres elementos fuera del servidor del sitio: el acceso al repositorio, la contraseña o la clave que lo abre y la lista de secretos de la aplicación.

A continuación alquile un VPS de prueba desechable, con el mismo sistema que producción, y prevea destruirlo al final de la sesión. En cuanto al esfuerzo, cuente como orden de magnitud editorial media jornada por trimestre para un sitio tipo, más para un repositorio voluminoso, menos cuando el procedimiento está rodado. Anote la hora de inicio antes del primer comando, nunca después.

El procedimiento en nueve pasos

  1. Fijar el incidente simulado

    Anote la hora exacta del incidente simulado, por ejemplo la última escritura conocida en el sitio, y el alcance a restaurar: archivos, base de datos, configuración. Esa hora sirve para calcular el RPO.

  2. Crear el VPS de prueba

    Cree una máquina nueva con el mismo sistema operativo que producción. Ningún archivo del sitio llega a ella desde el disco original. Anote la hora de inicio: es la salida del cronómetro del RTO.

  3. Instalar la herramienta y abrir el repositorio

    Instale solo la herramienta de copias y la pila del sitio (servidor web, PHP, base de datos). Recupere los accesos de su gestor de contraseñas, nunca del servidor siniestrado. restic -r <repositorio> snapshots debe listar los puntos de restauración.

  4. Elegir la instantánea

    Elija la última instantánea anterior al incidente simulado y anote su identificador y su marca de tiempo. Ella fija el RPO constatado.

  5. Restaurar los archivos

    restic -r <repositorio> restore <id> --target /srv/restauracion
    Después mueva el contenido al directorio web. Con Borg, sitúese primero en la carpeta de destino, porque la extracción escribe en el directorio actual: cd /srv/restauracion && borg extract <repositorio>::<archivo>.

  6. Restaurar la base de datos

    pg_restore --create --dbname=postgres copia.dump
    Para un volcado de texto, psql -f copia.sql. Después cuente las filas de una tabla testigo (SELECT count(*) FROM pedidos;) y compárelas con el valor leído en producción antes de la prueba.

  7. Reconstruir la configuración

    Vuelva a colocar el archivo .env, los secretos, el vhost y las tareas programadas desde el gestor, y alinee las versiones de PHP y de la base de datos con las de producción.

  8. Verificar la aplicación

    Abra la página de inicio, acceda a la administración y localice el último pedido o artículo en la base de datos. Sin tocar el DNS: curl -k --resolve your-domain.com:443:<IP_DEL_VPS_DE_PRUEBA> https://your-domain.com/.

  9. Parar el cronómetro y destruir la máquina

    Pare en la primera petición de aplicación correcta, no al terminar el comando de restauración. Calcule el RTO y el RPO, rellene el registro y destruya el VPS de prueba.

El cronómetro: RTO y RPO constatados

El RTO constatado es la hora en que termina la restauración verificada menos la hora de inicio de la prueba. El RPO constatado es la diferencia entre la hora del incidente simulado y la marca de tiempo de la instantánea restaurada. Tomemos un ejemplo ficticio: incidente simulado a las 14:00, última instantánea tomada a las 03:00 del mismo día, es decir 11 horas de datos perdidos. Si el contrato promete 24 horas, es conforme; si promete 4, no lo es, y el registro debe escribirlo tal cual.

Un RTO medido en una prueba sigue siendo un suelo optimista: máquina nueva, nadie esperando, sin presión. Aun así vale más que un cálculo a ojo, sobre todo con un repositorio voluminoso: con un caudal modesto, el tiempo de descarga basta para volver irreal un RTO teórico. Mida el caudal real durante la restauración y anótelo en el registro.

El registro de prueba: campos que rellenar

Desplace la tabla

CampoQué se anotaEjemplo
Fecha y sitioDía de la prueba y sitio del cliente restauradoDD/MM/AAAA, sitio de demostración
Herramienta e instantáneaHerramienta de copias, identificador y marca de tiempo de la instantáneaRestic, identificador corto, marca de tiempo completa
Duración y RTOHora de inicio, hora de fin verificada, duración constatadaInicio 09:00, fin 10:40, RTO 1 h 40
RPO constatadoDiferencia entre incidente simulado e instantánea, comparada con el objetivo11 h constatadas frente a 24 h prometidas
AnomalíasTodo lo que bloqueó o ralentizó la recuperaciónCarpeta de subidas fuera del alcance
Corrección y plazoAcción, responsable y fecha de realizaciónAñadir la carpeta al repositorio antes de la próxima prueba
FirmantePersona que da fe de la pruebaNombre, cargo, firma
Fuera de alcanceLo que no se probóCorreo, DNS, certificados, servicios de terceros

Comandos de referencia por herramienta

Desplace la tabla

HerramientaListar los puntos de restauraciónRestaurar y comprobar
Restic`restic -r <repositorio> snapshots``restic -r <repositorio> restore <id> --target /srv/restauracion`
Restic, integridad del repositorio`restic -r <repositorio> check``check` verifica la estructura; `--read-data` relee todo el repositorio, `--read-data-subset=10%` una parte al azar
Borg`borg list <repositorio>`, luego `borg list <repositorio>::<archivo>``borg extract --list <repositorio>::<archivo>` desde la carpeta de destino; `--dry-run` lee y verifica sin escribir
PostgreSQL, volcado custom`pg_restore --list copia.dump``pg_restore --create --dbname=postgres copia.dump`, luego recuento de una tabla testigo
PostgreSQL, volcado de textoComprobar el tamaño y la fecha del archivo`psql -f copia.sql`, luego recuento de una tabla testigo
Archivos subidosComparar el número de archivos del repositorio con producción`find /srv/restauracion -type f | wc -l`, luego abrir tres archivos al azar

Trampas de la restauración, con su síntoma

  • Clave del repositorio guardada en el servidor siniestrado — la máquina nueva no abre el repositorio y muestra wrong password or no key found; guarde la clave en un gestor aparte, con dos titulares.
  • Base restaurada, archivos subidos ausentes — el sitio se muestra pero las imágenes y adjuntos devuelven 404; el alcance cubría solo la base o solo el código.
  • Versión de PHP o de base distinta — página en blanco, error de sintaxis o de migración; anote en el registro las versiones de cada sitio.
  • Secretos y .env sin copia — la aplicación arranca pero ya no alcanza la base, el servidor de correo ni las API de terceros.
  • Repositorio demasiado voluminoso para el ancho de banda — el RTO teórico parece bueno, el real supera la promesa; mida el caudal antes de prometer.
  • Volcado truncado — el número de filas de la tabla testigo no coincide con producción; repita la copia y compruebe su tamaño.
  • Tareas programadas sin recrear — el sitio responde pero ya no envía correos ni recordatorios; inventaríe los crons antes de la prueba.

Resolución de problemas: errores vistos durante un ejercicio

Fatal: wrong password or no key found — Restic no encuentra ninguna clave que se abra con la contraseña proporcionada. Causas frecuentes que descartar una a una: contraseña con caracteres especiales alterados por el shell, contraseña leída de la entrada estándar, URL de repositorio S3 con el estilo equivocado, archivo de clave dañado. Pruebe --password-file o la variable RESTIC_PASSWORD, compruebe la URL del repositorio y después restic key list. Si la contraseña está realmente perdida, los datos del repositorio se pierden con ella: regístrelo como anomalía crítica.

Ningún punto de restauración reciente — restic snapshots no lista nada de la última semana: el trabajo de copia se detiene en silencio. Corrija el temporizador y añada una alerta.

pg_restore termina con errores ignorados — por defecto continúa y muestra un recuento al final. Repita con --exit-on-error para detenerse en el primer error, y léalo antes de dar la prueba por buena.

Los archivos están pero el sitio devuelve 403 — la restauración como root dejó los archivos con el propietario equivocado. Devuélvaselos al usuario del servidor web.

La contraseña del repositorio nunca vive sola en el servidor

Guárdela en un gestor de equipo, con una copia sellada en manos de un segundo responsable. El ejercicio empieza abriendo el repositorio desde ese gestor: si alguien tiene que conectarse al servidor del sitio para encontrar la contraseña, la prueba ya ha fallado, y es la anomalía más útil que puede revelar.

El registro entregado al cliente: una página y lo que no se probó

El registro cabe en una página: encabezado con cliente, sitio y fecha; tabla de los ocho campos; conclusión de una frase, conforme o no con los objetivos de RPO y RTO; plan correctivo fechado; firma. Reserve un recuadro final "No probado en este ejercicio": buzones de correo y entregabilidad, DNS y delegación, certificados TLS, servicios de terceros como el pago o un CRM, y cualquier otro sitio de la cuenta.

Un registro que no escribe sus límites se lee como "todo está respaldado", y es una promesa que nadie puede cumplir. Conserve los registros de cada trimestre: una sola prueba demuestra un día, una serie demuestra una práctica. Anote también la versión de PHP de cada sitio, como en la guía sobre el inventario de versiones de una cartera de clientes: es la trampa más frecuente al repetir la restauración.

Lado contractual: lo que debe nombrar la cláusula de copias

Una cláusula útil nombra siete puntos: el alcance (archivos, bases de datos, configuración), la frecuencia, la retención, los objetivos de RPO y de RTO, la frecuencia y la prueba de los ensayos, la responsabilidad si la restauración falla y la persona que posee los accesos al repositorio. No es asesoramiento jurídico: haga revisar el texto por un abogado. Y no prometa nunca lo que la infraestructura subyacente no garantiza.

En este punto, las copias de ServOrbit.com son semanales en la gama de entrada, diarias en Pro y en todas las ofertas de hosting para revendedores. El RPO mínimo se deduce de esa frecuencia: hasta siete días con una copia semanal, hasta un día con una diaria. Un RPO inferior a un día exige, por tanto, una copia de aplicación propia de la agencia, además. En cuanto a la duración de la restauración, de una frecuencia no se deduce ningún compromiso: se mide, con el ejercicio anterior.

Hacer facturable la prueba: un argumento de venta, no una carga

La objeción es conocida: el cliente no lo pide y el tiempo no se factura. Dos respuestas. Incluya en el plan de mantenimiento una línea "prueba de restauración trimestral, registro entregado", o facture aparte la media jornada. Y trate el registro como un entregable: tras un incidente muestra lo que se había probado y corregido; en la fase de venta responde a "demuéstrenlo" antes de que se haga la pregunta.

Para mantener el ritmo en una cartera, prevea una rotación: un sitio por cliente y por trimestre, con el calendario fijado a principios de año. El VPS de prueba se alquila y se destruye a demanda; las condiciones figuran en la página de la oferta.

Una cartera de sitios y pruebas que entregar

Una agencia que debe demostrar sus restauraciones necesita un único lugar para su cartera: dominios, hosting y VPS de prueba desechables. El espacio de agencia de ServOrbit.com centraliza los servicios y los vencimientos: usted mantiene la relación con el cliente, nosotros llevamos la infraestructura.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva