Seguridad desde cero

restic: excluir carpetas (node_modules, cachés) y qué pasa si te equivocas en el patrón

2026-10-18

Una copia de tu carpeta personal incluye cosas que no merece la pena guardar: node_modules, cachés, descargas temporales. Excluirlas ahorra espacio y tiempo, pero un error en el patrón tiene una consecuencia incómoda que la prueba confirmó: restic no avisa.

Condiciones: restic 0.16.4, repositorio local, contraseña desechable y datos sintéticos: una carpeta node_modules con un fichero aleatorio de 5 MiB, una carpeta cache con otro de 3 MiB y una marca CACHEDIR.TAG, más dos ficheros de texto pequeños. Script: tools/test-restic-exclude.sh. No se probó nada en Windows ni con rutas con comodines complejos.

Sin exclusiones

restic -r REPO backup ~/datos

Resultado: 5 ficheros nuevos, 8,005 MiB añadidos al repositorio. Entran los dos ficheros pesados.

Con --exclude y --exclude-caches

restic -r REPO backup ~/datos --exclude node_modules --exclude-caches

El snapshot resultante contiene solo 3 ficheros: informe.txt, main.py y la propia CACHEDIR.TAG. Dos detalles: --exclude-caches deja fuera el contenido de la carpeta marcada, pero conserva el fichero marca; y el segundo backup añadió solo 2,79 KiB porque restic ya tenía los datos de los ficheros restantes de la primera copia (deduplicación). No se pueden comparar tamaños de dos copias consecutivas sin tenerlo en cuenta; para saber cuánto ocupa una exclusión, hazla en un repositorio nuevo.

El patrón mal escrito

Se escribió en un fichero de exclusiones node_module (sin la s) y se lanzó restic backup --exclude-file excl.txt --dry-run. Respuesta: Files: 2 new y Would add to the repository: 708 B, sin ningún aviso ni error: el patrón no coincidía con nada y restic lo aceptó igual. Dicho de otro modo, un patrón equivocado hace que se guarde de más, y al revés, uno demasiado amplio hace que falte algo, también en silencio. (En esta prueba solo se vio el primer caso.)

Hábito que lo evita

  1. Antes de programar la copia, lanza backup --dry-run -vv y revisa la lista de ficheros que entrarían (la opción --dry-run sí se usó en la prueba; el detalle de -vv no se comprobó).
  2. Tras la primera copia, restic ls latest y comprueba que lo que importa está y lo que no, no.
  3. Haz una restauración de prueba de un fichero concreto (cómo): es la única forma de saber que una exclusión no se llevó algo valioso.

Este artículo no contiene enlaces de afiliado.