#! /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