Mantenha apenas uma certa quantidade de backups (tarballs) em um diretório

0

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
    
por coolman5594 10.11.2018 / 05:45

2 respostas

0

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.

    
por 10.11.2018 / 05:53
0

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
    
por 10.11.2018 / 07:05