#!/bin/bash
#                      /usr/local/bin/rsnapshotlimit.fey
# http://crystalfaeries.net/posix/bin/rsnapshotlimit.fey
# celeste:crystalfaery RSNAPSHOTLIMIT.FEY 2016-10-05 09:01:27+00:00
# $0 deletes old rsnapshots to alleviate disk partition full

touch /tmp/rsnapshotlimit$$ # one shot e-mail flag
let percent=`head -n 1 /etc/rsnapshotlimit | cut -f 1` # check soon after startup
let sleep=100-$percent

# loop forever as a daemon; checking more frequently as disk fills
while sleep "$sleep"m;do
#file_system="$(grep snapshot_root /etc/rsnapshot.conf|head -n 1|cut -f 2|sed 's/\/$//')"
file_system="/dev/mapper/fey--vg-var"
# echo "$0 monitoring $file_system" 1>&2
let percent=$( df -P -T | grep -v tmpfs | grep -v Capacity | grep $file_system  | sed 's/\%.*$// ; s/^.* //' ) || exit 2
# echo "$0 percent full $percent" 1>&2
let sleep=100-$percent
if [[ $percent -gt $(head -n 1 /etc/rsnapshotlimit | cut -f 1) ]]
then

#	uncomment this if /var/cache/rsnapshot does not have it's own partition, but shares with the system
#	/usr/local/bin/thumbnail_expire	"$sleep" &		# release the daleks

	# where are the backups we delete?
	cd `grep snapshot_root /etc/rsnapshot.conf|head -n 1|cut -f 2`				|| exit 2
	oldest=`ls -rt | head -n 1`								|| exit 3
	if [ "X$oldest" = "X" ]
	then
		if [ -f /tmp/rsnapshotlimit$$ ]
		then
			rm /tmp/rsnapshotlimit$$
			echo "Process $$ Disk Usage $percent \nFix and restart me."	| mail -s "$(basename `echo $0`) du"		root &
			#aptitude clean&			# release the hounds
			apt-get clean&				# release the hounds
		else
			#aptitude clean&			# release the hounds
			apt-get clean&				# release the hounds
		fi
	else
		echo	remove	"$oldest"	| mail -s "$(basename `echo $0`) $oldest"	root &
		rm	-rf	"$oldest"	# Delete the oldest backup
	fi
fi
if [[ $sleep -lt 1 ]]
then
	let sleep=1	# minimum sleep time
fi
done
&& exit 0											|| exit 4
echo "rsnapshots: `ls $(grep snapshot_root /etc/rsnapshot.conf|head -n 1|cut -f 2) | grep -v lost+found | tr '[\n]' ' '`"
find /etc -maxdepth 1 -name 'rsnapshotlimit' -type f -print0 -exec head -n 1 {} \; | sed 's/limit./limit:	/'
&& exit 0											|| exit 4


syntax highlighted by Code2HTML, v. 0.9.1