}
sub rewind_raw () {
- system "mt -f $tape rewind"; $? and die $?;
+ runsystem("mt -f $tape rewind");
}
sub readtapeid_raw () {
"| tar -b$blocksize -vvxf - TAPEID";
}
+sub runsystem ($) {
+ pboth(" $_[0]\n");
+ system $_[0];
+ $? and die $?;
+}
+
sub pboth ($) {
my ($str) = @_;
print LOG $str or die $!;
my ($what) = @_;
$currenttapefilenumber++;
$currenttapefilename= $what;
- pboth(sprintf "writing tape file #%d (mt fsf %d): %s",
+ pboth(sprintf "writing tape file #%d (mt fsf %d): %s\n",
$currenttapefilenumber, $currenttapefilenumber-1, $what);
}
# checkallused checks that all the filesystems mounted are in fact
# dumped in both full and incremental dumps.
+openlog();
+
if (!$nocheck) {
setstatus "FAILED configuration check";
print "Configuration check ...\n" or die $!;
# Read the filesystem group definition (file fsys.nnn)
readfsys("$fsys");
-openlog();
$doing= "dump of $fsys to tape $tapedesc in drive $tape";
print LOG "$doing:\n" or die $!;
if (!$noreten) {
setstatus "FAILED retensioning";
- system "mt -f $tape reten"; $? and die $?;
+ runsystem("mt -f $tape reten");
}
setstatus "FAILED writing tape ID";
close DDERR;
m/\n(\d+)\+0 records out\n/ or die ">$dderr< ?";
push @tapefilesizes, [ $1, $currenttapefilename ];
- $totalrecords++;
- pboth("total blocks written so far: $totalrecords");
+ $totalrecords += $1;
+ pboth("total blocks written so far: $totalrecords\n");
}
# The backup should now be complete; verify it
setstatus "FAILED during check";
# Rewind the tape and skip the TAPEID record
-system "mt -f $tape rewind"; $? and die $?;
-system "mt -f $ntape fsf 1"; $? and die $?;
+runsystem("mt -f $tape rewind");
+runsystem("mt -f $ntape fsf 1");
# Check the md5sums match for each filesystem on the tape
open S,"this-md5sums" or die $!;
print LOG "checksum ok $csum\t$tf\n" or die $!;
}
printdate();
-system "mt -f $tape rewind"; $? and die $?;
+runsystem("mt -f $tape rewind");
setstatus "FAILED during cleanup";
-pboth("summary:");
+$summary= '';
foreach $tfs (@tapefilesizes) {
- pboth(sprintf " %10d blocks for %s\n", $tfs->[0], $tfs->[1]);
+ $summary .= sprintf " %10d blocks for %s\n", $tfs->[0], $tfs->[1]
}
-pboth(sprintf " %10d blocks total (of %d bytes) plus TAPEID and headers\n",
- $totalrecords, $blocksizebytes);
+$summary .=
+ sprintf " %10d blocks total (of %d bytes) plus TAPEID and headers\n",
+ $totalrecords, $blocksizebytes;
+
+pboth("size-summary:\n");
+pboth($summary);
+
+open SS, ">size-summary..new" or die $!;
+print SS $summary or die $!;
+close SS or die $!;
+rename 'size-summary..new',"size-summary.$fsys" or die $!;
# Write to some status files to indicate what the backup system
# ought to do when next invoked.
# better be a decimal number
$advance =~ m/^\d+$/ or die "$advance ?";
+# Get a list of all filesystems
+readfsys('all');
+openlog();
+
# Rewind the tape and if we are the first incremental on the tape then
# write the TAPEID record, otherwise skip forward to the correct point.
# (full will already have checked that this is the right tape before
# it invoked us, so no need to read the existing TAPEID record first.)
-system "mt -f $ntape rewind"; $? and die $?;
+runsystem("mt -f $ntape rewind");
if ($advance == 1) {
writetapeid($tapeid,$tapedesc);
} else {
- system "mt -f $ntape fsf $advance"; $? and die $?;
- $currenttapefilenumber= $advance+1;
+ runsystem("mt -f $ntape fsf $advance");
+ $currenttapefilenumber= $advance;
}
-# Get a list of all filesystems
-readfsys('all');
-openlog();
-
sub closepipes () {
close(DUMPOR); close(BUFOR);
close(DUMPOW); close(BUFOW);
}
# Rewind the tape, and increment the counter of incremental backups.
-system "mt -f $tape rewind"; $? and die $?;
+runsystem("mt -f $tape rewind");
open IAN,">increm-advance.new" or die $!;
print IAN "$advance\n" or die $!;
close IAN or die $!;