Posted on: October 13, 2021 10:42 PM
Posted by: Renato
Views: 1348
Shell script remove arquivos mais de 10 dias
find é a ferramenta comum para este tipo de tarefa:
find ./my_dir -mtime +10 -type f -delete
EXPLICAÇÕES
seu diretório (substitua pelo seu)
./my_dir
your directory (replace with your own)-mtime +10
older than 10 days-type f
only files-delete
no surprise. Remove it to test yourfind
filter before executing the whole command
E tome cuidado para que ./my_dir exista para evitar surpresas ruins!
Apenas apimentar o script de shell acima para excluir arquivos mais antigos, mas com registro e cálculo do tempo decorrido
#!/bin/bash
path="/data/backuplog/"
timestamp=$(date +%Y%m%d_%H%M%S)
filename=log_$timestamp.txt
log=$path$filename
days=7
START_TIME=$(date +%s)
find $path -maxdepth 1 -name "*.txt" -type f -mtime +$days -print -delete >> $log
echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log
... code for backup ...or any other operation .... >> $log
END_TIME=$(date +%s)
ELAPSED_TIME=$(( $END_TIME - $START_TIME ))
echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time :: $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) " >> $log
O código adiciona algumas coisas.
- log files named with a timestamp
- log folder specified
- find looks for *.txt files only in the log folder
- type f ensures you only deletes files
- maxdepth 1 ensures you dont enter subfolders
- log files older than 7 days are deleted ( assuming this is for a backup log)
- notes the start / end time
- calculates the elapsed time for the backup operation...
Nota: para testar o código, apenas use -print em vez de -print -delete. Mas verifique seu caminho com cuidado.
Nota: mtime pode ser substituído por mmin para melhor controle, já que mtime descarta todas as frações (mais de 2 dias (+2 dias) na verdade significa 3 dias) quando se trata de obter os carimbos de data / hora de arquivos no contexto de dias
-mtime +$days ---> -mmin +$((60*24*$days))
Se você puder trabalhar por meio dos dados do arquivo, poderá
find -mmin +14400 -delete
USEI ESTE PARA TESTE NO UBUNTU:
sudo find /var/log/ -mtime +5 -type f -delete
Fontes:
Donate to Site
Renato
Developer