Script : Rotation de logs sous Linux

De www.yakakliker.org
Révision datée du 4 juin 2025 à 09:23 par Administrateur (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Script de rotation de logs

#!/bin/bash

####
# CONFIGURATION
####

# Repertoire contenant les logs
LOG_DIR=$1

# Fichiers à prendre en compte
ROTATE_FILES=$2

# Age maximum des archives (en jours)
MAX_ARCHIVES_AGE=$3

# Suffixe
SUFFIXE_FILENAME="_`date +%F`"


###
# FONCTIONS
###

## ROTATE ##
# $1 => Chemin du log
function rotate()
{
        to_log_file=$1$SUFFIXE_FILENAME.gz
        a=0

        while [[ -e $to_log_file ]]
        do
                a=$(($a+1))
                suffixe="-"$a
                to_log_file=$1$SUFFIXE_FILENAME$suffixe.gz
        done

        echo "Rotation $1 => $to_log_file"
        gzip -9 -c $1 > $to_log_file && > $1
}


for i in $ROTATE_FILES
do
        for j in `find $LOG_DIR -name $i`
        do

                rotate $j

        done

        cd $LOG_DIR

        find $LOG_DIR -name "$i*.gz" -mtime +$MAX_ARCHIVES_AGE -type f -exec echo "Suppression {}" \; -exec  rm -f {} \;
done


compteur web gratuit sans pub