Como posso excluir todos os backups por hora, exceto os 24 mais recentes?

1

Eu costumava ter um servidor com backups por hora / diário, todos prontamente disponíveis graças a este belo tutorial . Infelizmente, o servidor disse frito e agora tenho que fazer meus backups em um NAS que não execute 1 o meu sabor de linux favorito. Acontece que minha solução anterior não é executada no dito NAS porque sua oferta binária oferece menos opções.

No entanto, acho que hourly.n são nomes terríveis para backups. Eu prefiro tê-los formatados como horaire_YYYY_MM_DD_HHhMM 2 para que os usuários saibam imediatamente qual backup foi feito quando.

Eu quero manter 24 backups por hora antes de manter apenas backups diários. Por favor, note que eu não quero manter backups de hora em hora para as 24 últimas horas apenas; Se por algum motivo 3 alguns backups foram ignorados, eu ainda gostaria de manter 24 backups, mesmo que alguns tenham mais de um dia de idade.

Aqui está como eu costumava proceder:

        ls --format=single-column --directory --sort=time $(scheme "*") \
            | tail --lines +$((backup_count + 1)) \
            | xargs --verbose --delimiter="\n" rm -rf

scheme é apenas uma função que garante a formatação correta do diretório de backup, incluindo a data. Aqui usado com * para corresponder a cada backup por hora. ls lista cada diretório de backup por hora, classificado de trás para frente pelo tempo de criação 4 , tails descarta os 24 mais novos e xargs exclui os restantes.

Agora devo garantir que apenas use opções POSIX. Eu fui primeiro com:

ls -1 -d -t "$(scheme \*)" \
             | tail -n +$((backup_count + 1)) \
             | sed 's/\n/%pre%/g' \
             | xargs -0 rm -rf

mas ls não expande o * ; Eu substituí-lo com find , mas não tenho idéia de como classificar os resultados por data de criação. Gostaria de saber se eu também poderia ignorar tail completamente graças a find , que provavelmente é a ferramenta certa para a tarefa de qualquer maneira.

Como posso executar um comando em cada backup por hora que não é um dos 24 últimos?

  1. Bem, provavelmente poderia, mas isso implicaria descartar todas as ferramentas amigáveis e o suporte fornecido pelo provedor NAS, o que não queremos.
  2. horaire em vez de hourly porque os usuários e eu somos falantes de francês.
  3. O servidor de backup precisa ficar off-line por um dia, porque precisa ser movido, por exemplo,
  4. A ordem alfabética provavelmente poderia ser melhor se as datas ignorassem o horário de verão, o que seria um compromisso infeliz, mas aceitável.
por Édouard 09.04.2016 / 20:26

0 respostas