Apagar automaticamente arquivos de /var/log*

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

[ Hits: 4.488 ]

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

Script em Dialog pesquisa nome do banco no mysql

Inicializando os serviços de OmniBus

Removendo primeiras ou últimas linhas do arquivo

Crivo de Eratóstenes Simples em Shell Script (BASH Script)

open_tcp


  

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