Wednesday, December 2, 2009

Bash Script To Find and Delete All Files Except Some When the filesystem reaches a specific size

#!/bin/sh

# This script checks if the /siebel filesystem reaches the warning limit of free space
# And then delete the old logs except those of last 12 hours

warninglimit=1572864    # This number is in KB, it's equal to 1.5 GB,
                        # KB is used to avoid floating point numbers

filesystem="/siebel"   # The filesystem to be monitored

size=`df -k $filesystem|grep $filesystem|awk '{ print $3; }'`   # Extract size of /siebel Filesystem in KB

if [ $size -le $warninglimit ]  # If fs size is less than warning lim.
    then
              find /siebel/siebsrvr/enterprises/ESPRD/$HOSTNAME/log -cmin +720 \( ! -name "ESPRD*" \) | xargs rm  # Delete log files that are more than 12 hours old from now (except those starting with "ESPRD")
fi

Credit goes to Osama Magdy for the above script.

No comments: