Script : Rotation de logs sous Linux
De www.yakakliker.org
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