#!/bin/sh # # logroll # # Usage: logroll [no]compress # if [ $# -ne 3 ] then echo "Usage: logroll [no]compress" exit fi logdir=$(dirname $1) logfile=$(basename $1) if [ ! -f $logdir/$logfile ] then echo Logfile $logdir/$logfile not found. Aborting. exit fi keepcount=$2 if [ $keepcount -le 0 ] then echo Invalid keep count: $keepcount. exit fi compressopt=$3 case $compressopt in compress) compression="1" ;; nocompress) compression="" ;; *) echo Bad compression option: $compressopt exit ;; esac cd $logdir k=$((keepcount - 1)) while [ $k -gt 0 ] do kp1=$((k + 1)) if [ $compression ] then if [ -f $logfile.${k}.gz ] then mv $logfile.${k}.gz $logfile.${kp1}.gz else echo "Skipping " $logfile.${k}.gz fi else if [ -f $logfile.${k} ] then mv $logfile.${k} $logfile.${kp1} else echo "Skipping " $logfile.${k} fi fi k=$((k - 1)) done mv $logfile $logfile.1 if [ $compression ] then /bin/gzip $logfile.1 fi exit