restic en automático: qué código de salida devuelve cada fallo (y por qué el 3 no es un fallo total)
2026-10-18
Una copia programada con cron o con un temporizador de systemd falla en silencio salvo que alguien mire el código de salida. Esta prueba comprueba qué devuelve restic en cuatro fallos típicos, para decidir qué cuenta como "copia hecha" y qué como "avísame".
Condiciones: restic 0.16.4, repositorio local, ejecutado como usuario normal (no root, porque root lee ficheros con permisos 000). Script: tools/test-restic-exit-codes.sh. No se probó el envío de avisos (correo, Telegram, healthchecks): solo los códigos.
Resultados
| Situación | Código | Qué pasó |
|---|---|---|
Un fichero ilegible (chmod 000) entre otros legibles |
3 | error: open ...: permission denied, pero snapshot ... saved con el resto de ficheros |
| Repositorio inexistente | 1 | no se hizo copia |
Contraseña incorrecta (snapshots) |
1 | no se accedió al repositorio |
| Carpeta de origen inexistente | 1 | no se hizo copia |
| Todo correcto | 0 |
Los dos puntos clave:
- El código 3 guarda una copia parcial. El snapshot existe y contiene lo que se pudo leer. No es lo mismo que un fallo total, pero tampoco es una copia completa: trátalo como aviso, no como éxito. En la prueba se guardó 1 fichero de 2 (el ilegible quedó fuera).
- El código 1 sirve para varias causas distintas (repositorio, contraseña, origen). Para saber cuál fue, hay que leer el mensaje de error, no solo el código. En esta versión la contraseña incorrecta devolvió 1; puede que versiones más recientes distingan más casos, y no se probó.
Un envoltorio mínimo
restic -r "$REPO" backup ~/datos; rc=$?
case $rc in
0) echo "copia completa" ;;
3) echo "copia parcial: revisar ficheros ilegibles" ;; # avisar
*) echo "copia fallida (código $rc)" ;; # avisar con más urgencia
esac
Este fragmento usa los códigos observados; no se ejecutó con un servicio de avisos real. Añade siempre una comprobación externa de "hace cuánto fue la última copia buena": si cron deja de ejecutarse, el script nunca llega a avisar de nada.
Después de automatizar
- Haz una restauración de prueba tras la primera copia programada.
- Revisa las exclusiones: un fichero excluido por error no genera ningún código de error.
- Programa verificaciones por tandas.
Este artículo no contiene enlaces de afiliado.