Auto excluir arquivos com mais de 7 dias

8

Eu sou um noob completo no linux, mas estou começando a pegar o jeito dele. Eu tenho um servidor Ubuntu 16.04 executando um servidor FTP para backup de arquivos de vídeo de segurança. Os arquivos serão armazenados em pastas como: /home/securityfolder1 , /home/securityfolder2 , /home/securityfolder3 e assim por diante.

Observe que cada securityfolderN é um usuário diferente.

Como não quero que meus discos rígidos fiquem cheios o tempo todo, quero excluir arquivos com mais de 7 dias nessas pastas diariamente.

    
por Jacco van de Wijgaart 21.06.2016 / 08:22

2 respostas

9

Primeiro, esse comando localizará e excluirá todos os arquivos com mais de 7 dias em qualquer subdiretório em /home cujo nome comece com securityuser :

find '/home/securityuser*' -mtime +6 -type f -delete

Você precisa de -mtime +6 e não +7 porque -mtime conta 24 horas. Conforme explicado na seção -atime de man find ( -mtime funciona da mesma maneira):

   -atime n
          File  was  last  accessed n*24 hours ago.  When find figures out
          how many 24-hour periods ago the file  was  last  accessed,  any
          fractional part is ignored, so to match -atime +1, a file has to
          have been accessed at least two days ago.

Então, para encontrar um arquivo que foi modificado há 7 ou mais dias, você precisa encontrar arquivos que foram modificados há mais de 6 dias, portanto -mtime +6 .

O próximo passo é fazer com que este comando seja executado uma vez por dia. Como cada securityuserN é um usuário diferente (você pode querer repensar essa configuração, isso torna tudo mais complicado), isso deve ser executado como root. Então, edite /etc/crontab :

sudo nano /etc/crontab

E adicione esta linha:

@daily root find '/home/securityuser*' -mtime +6 -type f -delete

Isso executará o comando find uma vez por dia e excluirá os arquivos.

    
por terdon 21.06.2016 / 10:10
2

de acordo com meu conhecimento:

tente o comando find da seguinte forma:

find ./dirc/* -mtime +6 -type f -delete

./dirc/* : is your directory (Path)
-mtime +6 : modified more than 6 days ago (therefore, at least 7 days ago)
-type f : only files
-delete : no surprise. Remove it to test before like rm
    
por km8295 21.06.2016 / 08:36