summaryrefslogtreecommitdiff
path: root/sys/lib/backup/funcs
blob: d7d31f626d3c8eb199a79b57113228192426e7a7 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/rc
# funcs - rc functions and definitions common to dump scripts
fn backupinit {
	if (! ~ $backupinitdone yes) {
		disc=1
		tracks=0

		# tunable parameters
		set=set1
		fs=pie
		arenas=/dev/sde0/arena0	# on $fs
		rdev=/dev/sdE1		# on terminal with bd burner

		blocksize=8192
		arenasize=1073741824 # twice the venti default, on yoshimi & pie
		# trackbytes=$arenasize
		# discbytes=`{ls -l $rdev/data | awk '{print $6}'}
		# ntracks=`{ hoc -e 'int('$discbytes/$trackbytes')' }
		ntracks=45		# for BD dual-layer

		backupinitdone=yes
		backups=/sys/lib/backup
		path=(/bin $backups .)
	}
}

# assume we're in $backups/$set
fn updprog {
	echo 'disc='$disc 'tracks='$tracks >ndisc && mv ndisc disc
}

# assumes $set is set
fn dumpdone {		# arena-part arena-name
	@ {
		cd $backups/$set
		progress=yes
		tracks = `{hoc -e $tracks+1}
		updprog
		if (~ $debug yes)
			echo $2 >>fake	# pretend these are sealed
		echo $2 >>ondisc
	}
}

fn quitonfailure {	# exit-status
	if (! ~ $1 '' 0 '|')
		exit $1
}

# caller sets arenabase first
fn arenastart {		# arena#
	bytes =  `{ echo $arenabase' + ('$1' * '$arenasize')' | bc }
	blocks = `{ echo $bytes' / '$blocksize | bc }
	echo $blocks
}

backupinit