48 lines
913 B
Plaintext
48 lines
913 B
Plaintext
|
#!/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
|
||
|
}
|