code: plan9front

ref: e72da62915b09d5673b0c0179ba8dfe045aeb8c3
dir: /sys/lib/backup/tobackup/

View raw version
#!/bin/rc
# tobackup [set] - print names of venti arenas needing to be dumped to disc set
rfork e

cd /sys/lib/backup
. funcs

switch ($#*) {
case 0
case 1
	set=$1
case *
	echo usage: $0 '[set]' >[1=2]
	exit usage
}

if (! test -d $set) {
	echo $0: no backup set named $set in $backup >[1=2]
	exit 'no backup set'
}
if (! hget -o index http://$fs/index) {
	echo $0: 'can''t fetch venti index from' $fs >[1=2]
	exit 'no venti index'
}
if (! test -s index) {
	echo $0: 'empty venti index from' $fs >[1=2]
	exit 'empty index'
}

cd $set
awk '/^arena=/		{ name=$1 }
	/ disk=sealed/	{ print name; name = "" }
    ' ../index | sed 's/^arena=//' >nsealed
>>sealed
if (! cmp -s sealed nsealed)
	cp nsealed sealed
rm -f nsealed
if (! test -s sealed)
	exit ''

>>fake
if (test -s ondisc)
	comm -23 <{sort -u sealed fake} <{sort -u ondisc}
if not {				# first sealed arenas, dump all
	cat sealed
	chmod +a ondisc >>ondisc
}