osmo-pcap/contrib/osmo_pcap_clean_old

48 lines
1.1 KiB
Bash
Executable File

#! /bin/sh
# Script designed to clean up (zip/delete) old files
# Adjust the variables below and then copy/symlink this script
# to /etc/cron/cron.{hourly,daily}
# We want to keep the filenames dated and that confuses logrotate,
# hence this script.
# Number of pcap files per client
NUMFILES=8
ZIPAFTER=3
VERBOSE=0
# Path where the logfiles reside in
BASEPATH="/var/lib/osmo-pcap/"
# Find the client names present in basepath
# Check how many files there are for each client
# Delete files in excess of NUMFILES
cd "$BASEPATH"
do_cleanup()
{
i=1
find . -name "trace-$1*" |sort -r | while read LOG; do
if [ $i -gt $NUMFILES ]; then
[ $VERBOSE -eq 1 ] && echo "Deleting file \"$LOG\""
rm -f "$LOG"
elif [ $i -gt $ZIPAFTER ]; then
if [ "${LOG##*.}" != "gz" ]; then
[ $VERBOSE -eq 1 ] && echo "Compressing file \"$LOG\""
gzip "$LOG"
fi
else
[ $VERBOSE -eq 1 ] && echo "Noop for file \"$LOG\""
fi
i=$(($i+1))
done
}
find . -name "trace-*" |sed -e "s/.*trace-\([^-]\+\).*/\1/" |sort |uniq | while read CLIENT; do
[ $VERBOSE -eq 1 ] && echo "Cleaning logs for $CLIENT"
do_cleanup "$CLIENT"
done