Copias y recuperación
Qué copias hace tu aplicación por su cuenta, cuántas guarda y cuándo. Y la pregunta incómoda: ¿has probado alguna vez a restaurar una?
Por qué no basta con las copias del sistema
Las dos son complementarias: la del sistema cubre el desastre del disco, la tuya cubre los accidentes de datos — que son mucho más frecuentes.
Qué copias hacer
Un esquema sencillo que cubre lo anterior sin complicarse:
Y dónde: en el directorio de datos, en un subdirectorio propio. No en la caché —se borraría, nivel 39.3— ni en temporales.
La restauración
La mitad que se olvida. Una copia que el usuario no sabe usar es una copia que no existe:
- Desde la aplicación, en la pantalla de diagnóstico del nivel 41.5: una lista de copias con su fecha y un botón.
- Con confirmación seria, porque restaurar descarta lo posterior.
- Y haciendo una copia del estado actual antes de restaurar, para que restaurar por error no sea irreversible.
pub fn restaurar(conn: &mut Connection, ruta: &Path, copia: &Path) -> Result<(), Error> { // 1 · guardar lo actual, por si la restauración era un error let seguridad = copia_de_seguridad(conn, ruta)?; // 2 · cerrar la conexión antes de sustituir el fichero drop(conn); // 3 · sustituir con el patrón atómico del nivel 40.2 std::fs::copy(copia, ruta)?; log::info!("restaurado desde {copia:?}; el estado previo quedó en {seguridad:?}"); Ok(())}El paso 2 es el que se olvida: sustituir el fichero con la conexión abierta deja la aplicación hablando con un fichero que ya no existe, y el resultado es impredecible.
La pregunta incómoda
Y es la que da sentido a todo el nivel: ¿has probado alguna vez a restaurar una copia de tu aplicación?
Casi nadie lo ha hecho, y casi todo el mundo asume que funcionaría. Las tres formas típicas en que no funciona:
- La copia está incompleta, porque se hizo copiando ficheros con el registro anticipado activo. Nivel 41.5.
- La copia es de un esquema anterior, y al restaurarla la aplicación intenta migrarla otra vez — lo que está bien si el motor del nivel 43.2 lo soporta y es un desastre si no.
- O el fichero está ahí y nadie sabe cómo usarlo, porque no hay interfaz de restauración.
Las tres se descubren en diez minutos probando, y las tres son invisibles hasta que alguien las necesita de verdad.