X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=backup%2Fincrem;h=57a037dc31cadce80345a60b3cc5395a24a6563e;hb=66e4bde3e53d224a4568f3aecb3467ed855327a0;hp=e3037e8068e10617447b20ddeb18e00f64d795dd;hpb=6548c05b2f401d9d712acde8d0aff31388c0db70;p=chiark-utils.git diff --git a/backup/increm b/backup/increm index e3037e8..57a037d 100755 --- a/backup/increm +++ b/backup/increm @@ -61,29 +61,26 @@ close A or die $!; # 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) { - open TI,">TAPEID" or die $!; - print TI "$tapeid\n$tapedesc\n" or die $!; - close TI or die $!; - - system "tar -b$blocksize -vvcf TAPEID.tar TAPEID"; $? and die $?; - system "dd if=TAPEID.tar of=$ntape bs=${blocksize}b count=10"; $? and die $?; + writetapeid($tapeid,$tapedesc); } else { - system "mt -f $ntape fsf $advance"; $? and die $?; + 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); + close(GZOR); close(GZOW); } setstatus "PROBLEMS during incremental dump"; @@ -98,6 +95,7 @@ for $tf (@fsys) { pipe(DUMPOR,DUMPOW) or die $!; pipe(BUFOR,BUFOW) or die $!; + $gz= $gzi if length $gzi; if ($gz) { $bufir='GZOR'; pipe(GZOR,GZOW) or die $!; @@ -111,6 +109,9 @@ for $tf (@fsys) { print LOG "Not dumping $atf ($prefix) - not \`dump'.\n" or die $!; next; } + + nexttapefile("inc $prefix:$atf"); + # Same trick as full uses to do a pipeline whilst keeping track # of all exit statuses: # dump /dev/null @@ -128,7 +129,7 @@ for $tf (@fsys) { } # 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 $!;