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