aboutsummaryrefslogtreecommitdiff
path: root/zb-cleanup
blob: 825de43629455364fba7df0275e37d6eead1b9d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash

if [[ -z "$1" || -z "$2" ]] ; then
	echo "usage: $0 <zfs_object> <density>" >&2
	exit 1
fi

timestamp () {
	t="`echo \"$1\" |sed -e 's/^.*@zb-//' |tr 'p_' '+ '`"
	date --date="$t" +%s
}

density="$2"
timenow=`date +%s`
lasttime=0

zfs list -t snapshot -r -d 1 -H "$1" |awk '{print $1;}' | while read l ; do
	echo `timestamp "$l"` "$l"
done |sort -n | while read l ; do
	curtime=${l%% *}
	snapname=${l#* }

	if [ "$curtime" -ge "$timenow" ] ; then
		break
	fi
	
	if [ $(( $density*($curtime-$lasttime)/($timenow-$lasttime) )) -lt 1] ; then
		zfs destroy "$snapname"
	else
		lasttime="$curtime"
	fi
done