Adicione o seguinte no script ao final:
find "$DESDIR/$FILENAME" -type f -mtime +10 -delete
Isto irá encontrar o seu arquivo de backup (tar.gz) no diretório e excluir qualquer backup com mais de 10 dias.
Na minha máquina debian 9.4 eu tenho um script que comprime automaticamente & backups de todos os meus arquivos em um srv / com a data no nome xx-xx-xxxx.tar. Ele é movido para meu diretório / backups.
Eu gostaria de limitar a quantidade de arquivos .tar (backups) a 10 na pasta e remover o arquivo .tar mais antigo sempre que um novo tar for criado.
Qual seria a melhor maneira de fazer isso? Aqui está o meu script:
#!/bin/bash
#Purpose = Backup of Important Data
#Created on 17-1-2012
#Author = Hafiz Haider
#Version 1.0
#START
TIME='date +%b-%d-%y' # This Command will add date in Backup File Na$
FILENAME=backup-$TIME.tar.gz # Here i define Backup file name format.
SRCDIR=/srv/daemon-data # Location of Important Data Directo$
DESDIR=/backups # Destination of backup file.
tar -cpzf $DESDIR/$FILENAME $SRCDIR
#END
Você quer a mesma lógica usada pelo utilitário do sistema logrotate (8) , que pode ser configurado para manter um número máximo de arquivos. No espaço do usuário, há vários utilitários semelhantes a logrotate, conforme descrito nesta resposta: link
Dito isto, um arquivo de configuração simples como
"/home/coolman/backups" {
rotate 10
}
deve funcionar com a linha de comando
/usr/sbin/logrotate -s $HOME/backups.state -f $HOME/backups.config