Cómo configurar Borg Prune y Compact sin largos intervalos entre copias de seguridad

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

Para evitar largos intervalos sin copias de seguridad de Borg, ejecuta la poda de retención después de una copia de seguridad exitosa, pero programa la compactación del repositorio con menos frecuencia y fuera de la ventana principal de copias de seguridad. Borg 1.4 separa la eliminación de archivos de la recuperación física de espacio, por lo que no es necesario ejecutar borg compact después de cada borg prune.

Esta guía está dirigida al modelo de comandos estable actual de Borg 1.4.x. Borg 2 cambia la semántica de los repositorios y los archivos en varios aspectos, así que comprueba la versión instalada antes de copiar automatizaciones de otra versión principal.

Confirma la versión de Borg y el repositorio

borg --version
borg info /mnt/backup/borg-repo
borg list /mnt/backup/borg-repo

Las preguntas frecuentes de Borg indican que Borg utiliza un bloqueo para todo el repositorio y que solo un proceso puede tener acceso de escritura a la vez. Si una compactación larga coincide con la siguiente copia de seguridad programada, la copia de seguridad espera a que se libere el bloqueo o falla cuando vence el tiempo de espera del bloqueo.

Define primero la retención con una ejecución de prueba

borg prune es destructivo para el historial de archivos. La documentación de Borg prune recomienda encarecidamente realizar pruebas con --dry-run y --list.

borg prune   --dry-run   --list   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   /mnt/backup/borg-repo

Si un repositorio contiene copias de seguridad de varias máquinas o conjuntos de datos, el filtro de archivos es esencial. Sin un filtro restrictivo, Borg 1.4 considera todos los archivos del repositorio como candidatos para las mismas reglas de retención.

Ejecuta la poda solo después de una copia de seguridad exitosa

#!/bin/sh
set -eu
REPO=/mnt/backup/borg-repo
ARCHIVE='{hostname}-{now:%Y-%m-%d_%H-%M}'

borg create --stats "$REPO::$ARCHIVE" /srv/data

borg prune   --list   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   "$REPO"

No depures porque se haya activado un programador; depura porque una nueva copia de seguridad se completó correctamente y la política de retención ya se validó.

-15% OFF

Comprende por qué la depuración no libera espacio inmediatamente

Desde Borg 1.2, la compactación está separada de los comandos normales de escritura del repositorio. Las notas sobre la compactación independiente de Borg explican que eliminar o depurar archivos no recupera inmediatamente todo el espacio de disco del repositorio.

borg create
    |
nuevo archivo confirmado
    |
borg prune
    |
archivos antiguos eliminados del conjunto de retención
    |
borg compact
    |
espacio de segmentos no utilizado recuperado

Esto resulta útil para la programación, ya que las copias de seguridad diarias no necesitan asumir el coste total de reescribir segmentos del repositorio parcialmente utilizados.

Programa la compactación con menos frecuencia que la depuración

  • copia de seguridad: todas las noches;
  • depuración: después de cada copia de seguridad correcta o varias veces por semana;
  • compactación: una vez por semana durante un periodo tranquilo;
  • comprobación completa del repositorio: en un horario separado y menos frecuente.
# Copia de seguridad y depuración diarias
0 1 * * * /usr/local/sbin/borg-backup

# Compactación semanal
0 4 * * 0 /usr/local/sbin/borg-compact

Si las copias de seguridad suelen tardar varias horas, aleja más la compactación o usa un temporizador con dependencias explícitas.

Usa el umbral de compactación predeterminado antes de forzar reescrituras máximas

La documentación actual de compact utiliza un umbral predeterminado del 10 %.

borg compact --progress /mnt/backup/borg-repo

Ese valor predeterminado es un buen punto de partida cuando tu prioridad es una ventana de mantenimiento breve. Evita usar automáticamente --threshold 0; reescribe cada vez que se puede liberar espacio y puede ser considerablemente más lento en un repositorio grande.

Evita que el mantenimiento coincida con la próxima copia de seguridad

Si un trabajo puede esperar legítimamente a otro proceso de Borg, establece una espera de bloqueo con un límite:

borg --lock-wait 1800 create   /mnt/backup/borg-repo::'{hostname}-{now}'   /srv/data

No uses una espera de bloqueo muy larga como sustituto de una buena programación. Supervisa cuándo comienza y termina realmente la copia de seguridad.

Si varios clientes comparten un repositorio, escalona sus programaciones. Las preguntas frecuentes de Borg señalan que varios repositorios pueden reducir la contención de bloqueos cuando la deduplicación entre clientes no es importante.

Usa Quick Stats cuando los informes ralentizan prune

Borg 1.4.5 añadió --quick-stats para crear, eliminar y ejecutar prune, evitando las estadísticas más lentas de todo el repositorio cuando no sean necesarias.

borg prune   --quick-stats   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   /mnt/backup/borg-repo

Mantén espacio libre disponible antes de necesitar compact

No esperes a que el sistema de archivos del repositorio se quede sin espacio libre. Borg no puede realizar de forma fiable las operaciones normales de escritura del repositorio cuando el sistema de archivos está completamente lleno.

df -h /mnt/backup
borg info /mnt/backup/borg-repo

Para un plan de copias de seguridad NAS más amplio, la guía de copias de seguridad 3-2-1 de ZimaOS es un recordatorio útil de que la retención del repositorio es solo una capa del diseño de copias de seguridad.

Valida la programación antes de confiar en ella

  • ¿Cada copia de seguridad creó un archivo nuevo?
  • ¿prune se ejecutó solo después de realizar correctamente las copias de seguridad?
  • ¿El conjunto de retención coincidió con el plan de simulación?
  • ¿La compactación semanal terminó antes de la siguiente copia de seguridad?
  • ¿Aumentó el espacio libre después de compact?
  • ¿Algún trabajo pasó un tiempo inesperado esperando el bloqueo de Borg?

Si compact se solapa repetidamente con la siguiente copia de seguridad, reduce la frecuencia de compactación, mantén el umbral predeterminado, mueve compact a una franja horaria más tranquila o divide las cargas de trabajo no relacionadas en repositorios independientes.

Un patrón de mantenimiento de Borg con poca interferencia

DIARIO
01:00  borg create
        |
        +-- éxito --> borg prune
        |
        +-- error --> conservar los archivos antiguos, enviar una alerta

SEMANAL
04:00  borg compact

PERIÓDICO
        borg check
        restaurar archivos seleccionados

La regla central es simple: prune protege la política de retención; compact recupera espacio de almacenamiento; no es necesario ejecutarlos con la misma frecuencia.

Soporte y Consejos

Más para leer

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.