#!/bin/bash
####################################################
####################################################
##################### OPTIONS ######################
####################################################
####################################################
### MINIMUM FREE SPACE - WHEN SPACE GOES BELOW THIS VALUE SCRIPT WILL RUN
M=260
### HOW MUCH TO DELETE (IN GB)
F=50
### PATH TO LOGS
L=/home/kalli/autodelete
### PATH TO FOLDERS FROM WHICH SUBFOLDERS NEED TO BE DELETED (SEPERATE WITH SPACE)
P="/storage2/files/"
### DRIVE TO CHECK SPACE ON
D=/dev/md2
### MAX FOLDERS TO DELETE TO FREE UP SPACE
T=100
####################################################
####################################################
#################### SCRIPT ########################
####################################################
####################################################
### CHECK VARIABLES
if [ ! -n "$M" ]; then
echo Variable M must be set >> $L/error.log
exit
fi
if [ ! -n "$F" ]; then
echo Variable F must be set >> $L/error.log
exit
fi
if [ ! -n "$P" ]; then
echo Variable P must be set >> $L/error.log
exit
fi
if [ ! -n "$D" ]; then
echo Variable D must be set >> $L/error.log
exit
fi
### SCRIPT WAS EXECUTED
touch junk.log
echo `date +%x-%X` ... SCRIPT WAS EXECUTED >> $L/junk.log
### GET FREE SPACE
function space {
#echo SPACE WAS HERE
if [ `df -h | grep $D | cut -d' ' -f19 | cut -c4` ]; then
if [ `df -h | grep $D | cut -d' ' -f19 | cut -c4` = G ]; then
int=`df -h | grep $D | cut -d' ' -f19 | cut -c1-3`
varspace=`echo $int | bc -l | awk -F '.' '{ print $1; exit; }'`
#echo SPACE1 >> $L/junk.log
fi
#echo 1
#echo X $varspace
#elif [ `df -h | grep $D | cut -d' ' -f19 | cut -c4` = T ]; then
# varspace=ENOUGH
#echo 2
elif [ `df -h | grep $D | cut -d' ' -f20 | cut -c3` ]; then
if [ `df -h | grep $D | cut -d' ' -f20 | cut -c3` = G ]; then
varspace=`df -h | grep $D | cut -d' ' -f20 | cut -c1-2`
#echo SPACE2 >> $L/junk.log
fi
#echo 3
elif [ `df -h | grep $D | cut -d' ' -f22` = 0 ]; then
varspace=0
#echo 4
fi
}
### CALCULATE REQUIRED SPACE AFTER
let MF=$M+$F
space
#M=""$lol""$M"
#MF="$lol""$lol""$MF"
#varspace="$lol""$lol""$varspace"
#varspace="$lol""$varspace" | sed 's/[0-9]*/\\&/g'
#echo VS: $varspace
#echo M: $M
#echo MF: $MF
#if [ "$varspace" -lt "$MF" ]; then echo HAHA; fi
if [ ! "$varspace" = "ENOUGH" -a "$varspace" -lt "$M" ]; then
#echo A
loopn=0
if [ "$varspace" -lt "$MF" ]; then
#echo LOOP: "$loopn" AND T: "$T"
while [ "$loopn" -lt "$T" -a "$varspace" -lt "$MF" ]
do
dir=`find $P -mindepth 1 -maxdepth 1 -type d -printf '%Ts %p\0' | \
tr '\0\n' '\n\0' | sort -rn | tail -1 | cut -d' ' -f2- | \
tr '\0' '\n' | sed -e 's/\[/\\[/g' -e 's/\]/\\]/g'`
#| sed -e 's/\ /\\&/g' -e 's/\[/\\[/g' -e 's/\]/\\]/g'`
echo $dir >> workingon.log
rm -rvf "$dir" | grep "removed directory" | echo "`date +"%a %b %d %H:%M:%S %Y"` AUTODELETE: "$dir"" >> /glftpd/ftp-data/logs/glftpd.log
loopn=$(( $loopn + 1 ))
space
done
else echo There is currently sufficient space left on $D | echo `date +%x-%X` ... There is currently sufficient space left on $D >> $L/main.log
fi
fi