Encontrar arquivos tar.gz em uma pasta com mais de 20 dias e excluir

1

Eu tenho um script de backup que cria um backup (em tar.gz) da minha pasta / var / www em minha pasta CIFS-mount.

Para excluir backups antigos que apenas desperdiçam memória, criei um cronjob que verifica todos os dias se um arquivo tem mais de 20 dias e, se necessário, exclui os arquivos tar.gz específicos.

Aqui está o meu cron:

0 1 * * * find /my/cifs/mnt/path/*.tar.gz -mtime +20 -exec rm {} \;

Isso é certo? Não que haja algum erro, que exclui, e. todos os arquivos no disco rígido com mais de 20 dias e não apenas os arquivos na pasta de backup.

    
por fkin 06.03.2016 / 15:54

1 resposta

1

Normalmente você usaria a opção -name :

 0 1 * * * find /my/cifs/mnt/path/ -name '*.tar.gz' -mtime +20 -exec rm {} \;

Além disso, certifique-se de encontrar arquivos :

 0 1 * * * find /my/cifs/mnt/path/ -name '*.tar.gz' -type f -mtime +20 -exec rm {} \;

Ao dividir a opção -name , você encontrará arquivos no diretório fornecido, bem como em subdiretórios. Além disso, se não houvesse arquivos, então find reportaria um erro (em vez de simplesmente seguir em frente sem ação).

Finalmente, você pode manipular nomes de arquivos com caracteres incomuns (como espaços) alterando o final do comando:

 0 1 * * * find /my/cifs/mnt/path/ -name '*.tar.gz' -type f -mtime +20 -exec rm {} +
    
por 06.03.2016 / 15:55