chiark
/
gitweb
/
~ian
/
chiark-utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
@@ -3,6 +3,7 @@
[chiark-utils.git]
/
backup
/
checkallused
diff --git
a/backup/checkallused
b/backup/checkallused
index ab2dcd63d8de5999461b174284f3549892bdd776..953f136f8e8dee3b6de996eafe7dc222b96550ca 100755
(executable)
--- a/
backup/checkallused
+++ b/
backup/checkallused
@@
-26,7
+26,7
@@
# incremental dumps or listed as exceptions.
BEGIN {
# incremental dumps or listed as exceptions.
BEGIN {
- $etc= '/etc/backup';
+ $etc= '/etc/
chiark-
backup';
require "$etc/settings.pl";
require 'backuplib.pl';
}
require "$etc/settings.pl";
require 'backuplib.pl';
}
@@
-56,16
+56,23
@@
while (!defined $tapedone{$tape}) {
$tape= $next;
}
$tape= $next;
}
+proc checkdevspec ($$$) {
+ my ($atf,$devspec,$why);
+ push @{ $devspec{$atf}{$devspec} }, $why;
+}
+
for $fsg (sort keys %fsgdone) {
print "filesystem group $fsg: ".join(' ',@{$fsgdone{$fsg}}).":\n ";
@fsys= ();
readfsys($fsg);
for $tf (@fsys) {
parsefsys();
for $fsg (sort keys %fsgdone) {
print "filesystem group $fsg: ".join(' ',@{$fsgdone{$fsg}}).":\n ";
@fsys= ();
readfsys($fsg);
for $tf (@fsys) {
parsefsys();
- $pstr=
$prefix ne '<local>' ? "$prefix:$atf" : $atf
;
+ $pstr=
"$pcstr$atf"
;
&e("dumped twice ($backed{$pstr}, $fsg): $pstr")
if defined $backed{$pstr};
$backed{$pstr}= $fsg;
&e("dumped twice ($backed{$pstr}, $fsg): $pstr")
if defined $backed{$pstr};
$backed{$pstr}= $fsg;
+ checkdevspec($pstr,"$pcstr$dev","filesystem group $fsg")
+ if length $dev;
print " $pstr";
}
print "\n";
print " $pstr";
}
print "\n";
@@
-76,8
+83,9
@@
print "incremental group:\n ";
readfsys('all');
for $tf (@fsys) {
parsefsys();
readfsys('all');
for $tf (@fsys) {
parsefsys();
- $pstr=
$prefix ne '<local>' ? "$prefix:$atf" : $atf
;
+ $pstr=
"$pcstr$atf"
;
$incrd{$pstr}= $fsg;
$incrd{$pstr}= $fsg;
+ checkdevspec($pstr,"$pcstr$dev","incremental group") if length $dev;
print " $pstr";
}
print "\n";
print " $pstr";
}
print "\n";
@@
-89,21
+97,22
@@
for $pfx ('', sort keys %prefix) {
$cmd= "$rstr $dfstr";
open X, "$cmd |" or die $!;
$_= <X>; m/^Filesystem/ or die "$cmd => $_ ?";
$cmd= "$rstr $dfstr";
open X, "$cmd |" or die $!;
$_= <X>; m/^Filesystem/ or die "$cmd => $_ ?";
- $p
pstr
= length($pfx) ? $pfx : '<local>';
- $pstr= length($pfx) ? "$pfx:" : '';
- print "mount points: $p
pstr
:";
+ $p
refix
= length($pfx) ? $pfx : '<local>';
+ $p
c
str= length($pfx) ? "$pfx:" : '';
+ print "mount points: $p
refix
:";
while (<X>) {
chomp;
next if m,^procfs\s,;
m,^/dev/(\S+)\s.*\s(/\S*)\s*$, or die "$_ ?";
($dev,$mp) = ($1,$2);
while (<X>) {
chomp;
next if m,^procfs\s,;
m,^/dev/(\S+)\s.*\s(/\S*)\s*$, or die "$_ ?";
($dev,$mp) = ($1,$2);
- $mounted{"$pstr$mp"}="$pstr$dev"; print " $1-$2";
- if (defined($backto= $backed{"$pstr$mp"})) {
+ checkdevspec("$pcstr$imp","$pcstr/dev/$dev","df");
+ $mounted{"$pcstr$mp"}="$pcstr$dev"; print " $1-$2";
+ if (defined($backto= $backed{"$pcstr$mp"})) {
if (m,^/dev/\S+\s+\d+\s+(\d+)\s,) {
$usedkb{$backto} += $1;
} else {
$usedkb{$backto} += 0;
if (m,^/dev/\S+\s+\d+\s+(\d+)\s,) {
$usedkb{$backto} += $1;
} else {
$usedkb{$backto} += 0;
- $unkkb{$backto} .= " + $p
str
$mp";
+ $unkkb{$backto} .= " + $p
refix:
$mp";
}
}
}
}
}
}
@@
-115,6
+124,14
@@
foreach $fsg (keys %usedkb) {
print "filesystem group $fsg: $usedkb{$fsg} 1K-blocks$unkkb{$fsg}\n";
}
print "filesystem group $fsg: $usedkb{$fsg} 1K-blocks$unkkb{$fsg}\n";
}
+foreach $dsk (keys $devspec) {
+ if (@{ $devspec{$dsk} } != 1) {
+ foreach $devspec @{ $devspec{$dsk} } {
+ &e("inconsistent devices for $dsk: $devspec");
+ }
+ }
+}
+
# We check that all mounted filesystems are dumped and all
# filesystems to be dumped are mounted. The expected-diffs
# config file allows us to make exceptions.
# We check that all mounted filesystems are dumped and all
# filesystems to be dumped are mounted. The expected-diffs
# config file allows us to make exceptions.
@@
-150,7
+167,9
@@
for (;;) {
for $fs (sort keys %backed) { length($mounted{$fs}) || &e("dumped ($backed{$fs}), not a mount point: $fs"); }
for $fs (sort keys %incrd) { length($mounted{$fs}) || &e("increm'd ($incrd{$fs}), not a mount point: $fs"); }
for $fs (sort keys %backed) { length($mounted{$fs}) || &e("dumped ($backed{$fs}), not a mount point: $fs"); }
for $fs (sort keys %incrd) { length($mounted{$fs}) || &e("increm'd ($incrd{$fs}), not a mount point: $fs"); }
-for $fs (sort keys %mounted) { length($backed{$fs}) || &e("mount point ($mounted{$fs}), not dumped: $fs"); }
+for $fs (sort keys %mounted) {
+ next if $backed{$fs}
+ length($backed{$fs}) || &e("mount point ($mounted{$fs}), not dumped: $fs"); }
for $fs (sort keys %mounted) { length($incrd{$fs}) || &e("mount point ($mounted{$fs}), not increm'd: $fs"); }
$emsg.= "configuration ok\n" unless $e;
for $fs (sort keys %mounted) { length($incrd{$fs}) || &e("mount point ($mounted{$fs}), not increm'd: $fs"); }
$emsg.= "configuration ok\n" unless $e;