Apaga automaticamente todos os arquivos da pasta com mais de 10 GB?

2

Eu tenho um pequeno servidor da DigitalOcean (US $ 5 / mês) e tenho apenas cerca de 16 GB de meus 20 GB nesse servidor. Estarei hospedando um site que baixará automaticamente alguns arquivos pequenos (3-6Mb) e, eventualmente, a pasta de download ficará grande. Existe algum tipo de trabalho cron ou script que será executado automaticamente todos os dias e verificar uma pasta específica, e se essa pasta exceder X quantidade de GB, ele tentará limpar a pasta? (alguns arquivos podem estar em uso)

Estou executando o Ubuntu 15 se isso for importante. Obrigado por qualquer dica.

    
por The Newbie 03.02.2016 / 01:48

1 resposta

2

Eu escrevi um script que fará isso abaixo - por favor, verifique se você está feliz com isso, particularmente com o comando rm -r, já que não o executei. (Esse comando deve excluir tudo na pasta especificada, incluindo subpastas.

#! /bin/bash

FOLDER=/folder/to/delete

MAXSIZEINGIGS=10

#### No User Serviceable Parts below this line ###

MAXSIZE=$(( $MAXSIZEINGIGS * 1024 * 1024 ))
FOLDERSIZE='du -ks $FOLDER | cut -f1'

if [ $FOLDERSIZE -gt $MAXSIZE ]
then
        rm -r $FOLDER/*
fi

Crie um arquivo com o script acima, então torne-o executável (chmod 755 filename) e adicione-o ao crontab com uma linha como

02 02 * * *    ownername   /path/to/file

(Isto irá rodar todas as manhãs às 02:02, e assume que você o adicionou em / etc / crontab. Se você o adicionou a um crontab de usuários, deixe de fora o bit "ownername".

Dito isso, eu me pergunto se isso é uma boa maneira de fazer as coisas. Uma abordagem totalmente diferente pode ser simplesmente remover todos os arquivos com mais de uma idade em uma base regular - você pode fazer isso com um liner de crontab como

02 04 * * *     username     find /data/spam -ctime +15 -exec rm {} +

Que procurará todos os arquivos com mais de 14 dias em / data / spam e os excluirá.

    
por 03.02.2016 / 03:23

Tags