9fans archive / 2006 / 09 / 371    prev next

search terms are split using tokenize from:regexp searches From: lines subject:regexp searches Subject: lines before:yyyy[/mm[/dd]] and after:yyyy[/mm[/dd]] specify date range powered by grep(1)
From: Russ Cox <rsc@swt...> Subject: venti backup example vs. 2GB Date: Mon, 25 Sep 2006 20:49:45 -0400 You can use %.0f to print the number from awk. Russ On 9/25/06, Robert Raschke <rrplan9@tom...> wrote: > Hi, > > I've been using a backup script modelled on the example in > /sys/src/cmd/venti/backup.example and the other day it "just" stopped > working. On debugging I found that I have now reached the beginning > of the fifth 500MB arena. The script uses awk to calculate the > starting byte offset and that fails with a floating point error (!) > when we go beyond the 2G mark. > > I resorted to a fairly brutal use of bc(1) and that seems to work. > Here's what I use now (I flipped the 2nd and 3rd parameter to the x fn > to make printing from bc easier): > > #!/bin/rc > > rfork e > . bkup.info > fn x { > echo x $* > y=$1 > if(~ $#$y 0){ > $y=0 > } > echo venti/wrarena -h venti_backup_server -o $3 $2 $$y > end=`{venti/wrarena -h venti_backup_server -o $3 $2 $$y | grep '^end offset ' | sed 's/^end offset //'} > if(~ $#end 1 && ! ~ $$y $end){ > $y=$end > echo '#' `{date} >>bkup.info > whatis $y >>bkup.info > } > } > hget http://127.1:8000/index | > awk ' > /^index=/ { blockSize=0+substr($3, 11); } > /^arena=/ { arena=substr($1, 7); } > /^ arena=/ { > start=substr($5, 2, index($5, ",")-2); > printf("\"x \"; \"%s \"; \"%s \"; s=%s-%s; print s;", arena, $3, start, blockSize); > } > ' |bc -s |rc > > > Robby > >