]> git.lizzy.rs Git - plan9front.git/blob - sys/lib/backup/backup
let the kernel set dma mode for ata by default
[plan9front.git] / sys / lib / backup / backup
1 #!/bin/rc
2 # backup [-n] [-d dev] [-s set] - backup venti arenas to disc set using dev
3 #       and record that.  also print recent fossil dump scores.
4 rfork ne
5 cd /sys/lib/backup
6 . funcs
7 bind -a . /bin
8
9 done=0
10 while (~ $done 0 && ! ~ $#* 0 && ~ $1 -*) {
11         switch ($1) {
12         case -d;        rdev=$2; shift
13         case -n;        debug=yes               # don't dump; use with -s test
14         case -s;        set=$2 ; shift
15         case --;        done = 1                # no break in rc, alas
16         case -*
17                 echo usage: $0 '[-n] [-d dev] [-s set]' >[1=2]
18                 exit usage
19         }
20         shift
21 }
22
23 fn sigint sighup sigterm {
24         exit note
25 }
26
27 fn dobackuparenas {
28         if (~ $debug yes) {
29                 echo pretending to backuparenas $*
30                 shift
31                 for (name)
32                         dumpdone arena0 $name
33         }
34         if not
35                 backuparenas $*
36 }
37
38 fn backupdisc {
39         echo please insert disc $disc of set $set into $rdev and press return to backup
40         echo -n $"*^': '
41         if (! ~ $debug yes)
42                 junk=`{read}
43         if not
44                 echo
45         dobackuparenas $rdev $*
46 }
47
48 fn backup1 {
49         progress=no
50         disc1trks=`{hoc -e $ntracks-$tracks}
51         disc1arenas=()
52         if (! ~ $disc1trks 0)
53                 disc1arenas=`{sed $disc1trks^q arenas}
54         if (! ~ $#disc1arenas 0 && ! ~ $disc1trks 0 && backupdisc $disc1arenas){
55                 tracks = `{hoc -e $tracks+$#disc1arenas}
56                 if (test $tracks -ge $ntracks) {
57                         disc=`{hoc -e $disc+1}
58                         tracks=0
59                 }
60                 updprog
61
62                 sed 1,$disc1trks^d arenas >morearenas
63                 mv morearenas arenas
64                 arenas=`{cat arenas}
65         }
66 }
67
68 cd $set
69 tobackup $set >arenas
70 quitonfailure $status
71
72 arenas=`{cat arenas}
73 if (~ $#arenas 0) {
74         echo no sealed arenas not yet on disc exist on $fs
75         exit ''
76 }
77
78 if (test -s disc)
79         .   disc
80 if not
81         updprog
82
83 if (! ~ $debug yes && ~ $set set1) {
84         9fs log
85         # don't hang in lp
86         tail -50 /n/$fs/sys/log/fs.archive |
87                 pr -h 'recent fossil dump scores' | lp &
88         echo fossil dump scores just printed.
89 }
90
91 progress=yes
92 while (test $#arenas -gt 0 && ~ $progress yes) {
93         backup1
94         quitonfailure $status
95 }
96 exit ''