Estamos enfrentando um problema incrivelmente comum: fazemos backups diários que resultam em arquivos compactados que têm a data no nome do arquivo e não queremos mantê-los todos para sempre.
Alguns requisitos que não considero muito estranhos:
- exclua todos, exceto os últimos X backups/dias
- mantenha os backups de domingo
- mantenha o último backup de cada mês
- alertar alguém se o backup mais recente tiver tamanho 0/mais de 50% maior/menor que o último
Tentei pesquisar no Google, mas só encontrei mil scripts, muitos deles com problemas e bugs gritantes. Não existem soluções “adequadas” para este problema que sejam bem testadas e tenham uma comunidade? Estou condenado a copiar e colar um script do SO ou SU que não será mantido ou receberá correções de bugs e algum dia provavelmente consumirá todos os nossos backups?
Responder1
GFS (Avô-Pai-Filho) método de retenção é provavelmente uma boa resposta aqui. Junte isso a alguns crons oportunos, como @ivanivan menciona.
Basicamente você faz backups diários, semanais e mensais (os crons controlarão quais são).
Então você pode decidir políticas de retenção
- Os backups diários normalmente seriam mantidos por no mínimo 1 semana (mas às vezes 2 a 3 semanas)
- Os backups semanais normalmente seriam mantidos por 5 semanas (mas potencialmente 8 semanas)
- Os backups mensais normalmente seriam mantidos por 6 ou 12 meses (dependendo do backup anual/semestral)
- Backups anuais/semestralmente também podem ser feitos, mas podem ser úteis apenas para contabilidade ou onde você precisa manter registros
Os crons também limpariam os arquivos antigos que estão fora da janela da política
Como sugere Ivanivan:
Seu problema parece que um conjunto relativamente simples de scripts de shell e tarefas cron resolveria isso. Pode sugerir que, em vez de pesquisar no Google por um script que funcione para a situação de outra pessoa, você pesquise no Google como aprender a fazer scripts de shell.
você pode querer dar uma olhada no script bash - é uma ótima coisa para aprender :)