Apagar automaticamente arquivos de /var/log*

Publicado por hauck (última atualização em 06/09/2023)

[ Hits: 3.654 ]

Download limpar_Logs.sh

Download 1693658202.limpar_Logs.sh (versão 2)

Download 1693673857.limpar_Logs.sh (versão 3)




Shell Script para apagar automaticamente arquivos do diretório /var/log; útil para limpar logs antigos do servidor conforme o agendamento que você configurar no CRON.
Ao executar o script, será salvo um arquivo de log com mesmo nome e no mesmo local com o final ".log"

Recomenda-se adicionar uma linha em /etc/crontab para execução automática deste script.

O código apenas apaga os arquivos, não faz backup.

  



Versões atualizadas deste script

Versão 2 - Enviado por hauck em 02/09/2023

Changelog: Melhorias gerais, atualização para apagar também arquivos de subpastas/subdiretórios.

Download 1693658202.limpar_Logs.sh


Versão 3 - Enviado por hauck em 02/09/2023

Changelog: Melhorias gerais, adicionada função "run".

Download 1693673857.limpar_Logs.sh


Esconder código-fonte

#!/usr/bin/env bash
##
#
LOG="$0.log"


[[ -f "$LOG" ]] && rm -rf $LOG

if [[ $EUID -ne 0 ]]; then
   echo -e "Este script deve ser executado pelo usuário root. \n      $0\n" >> $LOG
   exit
fi


Fext=("*.gz" "*.log.*" "*.*.log*")
Fpath="/var/log"

cd $Fpath


for ext in ${Fext[@]}; do
   compact=`find -name "$ext" | wc -l`
   
   if [[ $compact -gt 0 ]]; then
       compact2=`find -iname "*$ext"`
       
       for apaga in $compact2; do
       
          Fsize=`ls -sh $apaga | awk '{print $1}'` 
          rm -f $apaga && {
             echo -e "\nApagado arquivo: $apaga" >> $LOG
             echo -e "Tamanho: $Fsize" >> $LOG
          }          
       done
     
     
     
       # Remove qualquer arquivo com tamanho maior que 1Gb
      Frm_size=`find -size +1G -exec rm -rf {} \;` && {
         echo -e "\nApagados arquivos maiores que 1Gb: \n$Frm_size" >> $LOG
      }
     
        # Remove qualquer arquivo com mais de 3 dias de criação
      Frm_date=`find -ctime +3 -exec rm -rf {} \;` && {
           echo -e "\nApagados arquivos criados a mais de 3 dias: \n$Frm_date" >> $LOG
        }
     
      #for l in `find . -type f -exec ls {} \;`; do
      #       echo -n >$l &>/dev/null
      #done

   else
      echo -e "Nenhum arquivo para apagar em $Fpath terminando com $ext" >> $LOG
   fi
done



filesSize=`ls -lsh | sort -hr`
echo -e "\n\n## $Fpath  => tamanho do diretório depois de apagar os arquivos \n## \n$filesSize   \n" >> $LOG


Scripts recomendados

DELETAR arquivos a X semanas passadas

Mounter - Script para montar pendrive.

dcamt

DNSGEN - Gera e mantém configurações dos servidores DNS

Log do Squid em terminal


  

Comentários
[1] Comentário enviado por maurixnovatrento em 14/05/2023 - 19:57h


bacana.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts