Como configurar o prune e a compactação do Borg sem longas interrupções nas cópias de segurança

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

Para evitar longos intervalos sem cópias de segurança do Borg, execute a limpeza da retenção após uma cópia de segurança bem-sucedida, mas agende a compactação do repositório com menos frequência e fora da janela principal de cópia de segurança. O Borg 1.4 separa a eliminação de arquivos da recuperação física de espaço, pelo que não é necessário executar borg compact após cada borg prune.

Este guia destina-se ao modelo de comandos estável atual do Borg 1.4.x. O Borg 2 altera a semântica dos repositórios e dos arquivos em vários aspetos, por isso verifique a versão instalada antes de copiar automatismos de outra versão principal.

Confirmar a versão do Borg e o repositório

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

As perguntas frequentes do Borg referem que o Borg utiliza um bloqueio ao nível de todo o repositório e que apenas um processo pode ter acesso de escrita de cada vez. Se uma compactação longa coincidir com a próxima cópia de segurança agendada, esta aguardará pelo bloqueio ou falhará quando o tempo limite do bloqueio expirar.

Definir a retenção primeiro com uma simulação

borg prune é destrutivo para o histórico de arquivos. A documentação do Borg prune recomenda vivamente testar com --dry-run e --list.

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

Se um repositório contiver cópias de segurança de várias máquinas ou conjuntos de dados, o filtro de arquivos é essencial. Sem um filtro restritivo, o Borg 1.4 considera todos os arquivos do repositório como candidatos às mesmas regras de retenção.

Executar o prune apenas após uma cópia de segurança bem-sucedida

#!/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"

Não execute o prune porque o agendador foi acionado; execute-o porque uma nova cópia de segurança foi concluída com êxito e a política de retenção já foi validada.

-15% OFF

Compreenda por que motivo o prune não liberta espaço imediatamente

Desde o Borg 1.2, a compactação está separada dos comandos normais de escrita no repositório. As notas sobre a compactação separada do Borg explicam que eliminar ou executar o prune em arquivos não recupera imediatamente todo o espaço em disco do repositório.

borg create
    |
novo arquivo consolidado
    |
borg prune
    |
arquivos antigos removidos do conjunto de retenção
    |
borg compact
    |
espaço não utilizado dos segmentos recuperado

Isto é útil para o agendamento, porque as cópias de segurança diárias não precisam de suportar o custo total da reescrita de segmentos do repositório parcialmente utilizados.

Agende a compactação com menos frequência do que o prune

  • backup: todas as noites;
  • prune: após cada cópia de segurança concluída com êxito ou algumas vezes por semana;
  • compactação: uma vez por semana, durante um período tranquilo;
  • verificação completa do repositório: num agendamento separado e menos frequente.
# Cópia de segurança diária + prune
0 1 * * * /usr/local/sbin/borg-backup

# Compactação semanal
0 4 * * 0 /usr/local/sbin/borg-compact

Se as cópias de segurança forem executadas frequentemente durante várias horas, afaste mais a compactação ou utilize um temporizador com dependências explícitas.

Utilize o limiar de compactação predefinido antes de forçar o máximo de reescritas

A documentação atual do compact utiliza um limiar predefinido de 10%.

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

Essa predefinição é um bom ponto de partida quando a sua prioridade é uma janela de manutenção curta. Evite utilizar automaticamente --threshold 0; reescreve sempre que for possível libertar algum espaço e pode ser significativamente mais lento num repositório grande.

Impeça que a manutenção colida com a próxima cópia de segurança

Se uma tarefa puder legitimamente aguardar por outro processo Borg, defina um tempo de espera limitado para o bloqueio:

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

Não utilize uma espera de bloqueio demasiado longa como substituto de um bom agendamento. Monitorize quando a cópia de segurança começa e termina efetivamente.

Se vários clientes partilharem um repositório, distribua os respetivos agendamentos. As FAQ do Borg indicam que vários repositórios podem reduzir a contenção do bloqueio quando a deduplicação entre clientes não é importante.

Utilize estatísticas rápidas quando os relatórios estiverem a tornar o prune mais lento

Adicionado no Borg 1.4.5 --quick-stats para criar, eliminar e executar prune, evitando estatísticas mais lentas de todo o repositório quando não são necessárias.

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

Mantenha espaço livre disponível antes de precisar de compactar

Não espere até que o sistema de ficheiros do repositório fique sem espaço livre. O Borg não consegue executar de forma fiável operações normais de escrita no repositório quando o sistema de ficheiros está completamente cheio.

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

Para um plano de cópia de segurança NAS mais abrangente, o guia de cópia de segurança 3-2-1 do ZimaOS é um lembrete útil de que a retenção do repositório é apenas uma camada do planeamento de cópias de segurança.

Valide o agendamento antes de confiar nele

  • Cada cópia de segurança criou um novo arquivo?
  • O prune foi executado apenas depois de cópias de segurança bem-sucedidas?
  • O conjunto de retenção correspondeu ao plano de execução simulada?
  • A compactação semanal terminou antes da cópia de segurança seguinte?
  • O espaço livre aumentou depois de compact?
  • Alguma tarefa passou inesperadamente tempo à espera do bloqueio do Borg?

Se compact se sobrepuser repetidamente à cópia de segurança seguinte, reduza a frequência da compactação, mantenha o limiar predefinido, mude compact para um período mais tranquilo ou divida as cargas de trabalho não relacionadas em repositórios separados.

Um padrão de manutenção Borg com pouca sobreposição

DIARIAMENTE
01:00  borg create
        |
        +-- sucesso --> borg prune
        |
        +-- falha --> manter os arquivos antigos, emitir um alerta

SEMANALMENTE
04:00  borg compact

PERIÓDICO
        borg check
        testar o restauro de ficheiros selecionados

A regra central é simples: prune protege a política de retenção; compact recupera espaço de armazenamento; não precisam de ser executados com a mesma frequência.

Suporte e Dicas

Mais para Ler

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.