Remover backups com mais de 7 dias, exceto primeiro de cada mês

0

Eu quero excluir os backups com mais de 7 dias, mas mantenha o primeiro de cada mês.

O nome dos arquivos é: name_$(date +\%d\%m\%Y).tar.gz

Eu quero manter: name_$(date +\%m\%Y).tar.gz

Eu quero algo assim:

find /path -mtime +8 -exec rm {} \;

Onde posso encaixar em name_$(date +\%m\%Y).tar.gz ?

Talvez usando --exclude name_$(date +\%m\%Y).tar.gz

Estou procurando um comando de uma linha.

Não deseje subdiretórios.

Tentei com eco, não funciona bem, mas mostra o som de 01.

o --exclude simplesmente não funciona: command not found

    
por guest 18.12.2015 / 18:35

1 resposta

1

Isso funciona para mim no Debian / Ubuntu (e deve funcionar sob a maioria):

Por exemplo, se você tiver arquivos com data no seguinte formato:

mybackup_ 12-01-2015 .tar.gz

 $ find ./* -name 'mybackup_??-01-*' -prune -o -mtime +7 -exec ls {} \;

Comando:

  • Encontre todos os arquivos a partir da pasta atual
  • Remover (excluindo / excluindo) arquivos com correspondência de data '01'
  • e incluindo apenas arquivos de ≥7 dias (mtime)
  • Execute ls para mostrar o que resta.

If you want to delete them after testing command, just replace ls with rm.

Quando você está satisfeito com o comando, ele também funciona bem como uma tarefa / tarefa do cron. Eu tenho que executar meu script uma vez a cada dois meses. (meu script usa um mtime de +90 dias para limpar backups do mysql)

    
por 22.08.2016 / 20:05