mirror of https://gerrit.osmocom.org/osmo-pcap
81 lines
1.7 KiB
Bash
Executable File
81 lines
1.7 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.
|
|
|
|
# Method used either AGE or FILES
|
|
METHOD="AGE"
|
|
# Maximum age of the logs
|
|
MAXAGE=120
|
|
# Maximum number of logs to keep
|
|
MAXFILES=30
|
|
# Zip all files after the first n files
|
|
ZIPAFTER=3
|
|
# Set to 1 for debug output
|
|
VERBOSE=0
|
|
|
|
# Path where the logfiles reside in
|
|
BASEPATH="/var/lib/osmo-pcap/"
|
|
|
|
|
|
# Find the client names present in basepath
|
|
# Delete files older than MAXAGE days
|
|
# Zip all but the first ZIPAFTER files
|
|
cd "$BASEPATH"
|
|
|
|
|
|
do_cleanup_age()
|
|
{
|
|
find . -ctime +$MAXAGE -name "trace-$1-*.pcap*" |sort -r | while read LOG; do
|
|
[ $VERBOSE -eq 1 ] && echo "Deleting file \"$LOG\""
|
|
rm -f "$LOG"
|
|
done
|
|
}
|
|
|
|
do_cleanup_files()
|
|
{
|
|
i=1
|
|
find . -name "trace-$1-*.pcap*" |sort -r | while read LOG; do
|
|
if [ $i -gt $MAXFILES ]; then
|
|
[ $VERBOSE -eq 1 ] && echo "Deleting file \"$LOG\""
|
|
rm -f "$LOG"
|
|
fi
|
|
i=$(($i+1))
|
|
done
|
|
}
|
|
|
|
do_zip()
|
|
{
|
|
i=1
|
|
find . -name "trace-$1-*.pcap*" |sort -r | while read LOG; do
|
|
if [ $i -gt $ZIPAFTER ]; then
|
|
if [ "${LOG##*.}" != "gz" ]; then
|
|
[ $VERBOSE -eq 1 ] && echo "Compressing file \"$LOG\""
|
|
gzip "$LOG"
|
|
fi
|
|
fi
|
|
i=$(($i+1))
|
|
done
|
|
}
|
|
|
|
# Use an explicit pattern here
|
|
find . -name "trace-*.pcap*" |sed -n -e "s/.*trace-\(.\+\)-[0-9]\{8\}_[0-9]\{6\}\.pcap\(\..\+\)\?/\1/p" |sort |uniq | while read CLIENT; do
|
|
|
|
[ $VERBOSE -eq 1 ] && echo "Cleaning logs for $CLIENT"
|
|
|
|
if [ "x$METHOD" == "xAGE" ]; then
|
|
do_cleanup_age "$CLIENT"
|
|
elif [ "x$METHOD" == "xFILES" ]; then
|
|
do_cleanup_files "$CLIENT"
|
|
else
|
|
echo "Error, set METHOD to AGE or FILES"
|
|
exit 1
|
|
fi
|
|
|
|
do_zip "$CLIENT"
|
|
done
|