#!/usr/bin/perl BEGIN { $etc= '/etc/backup'; require "$etc/settings.pl"; require 'backuplib.pl'; } $|=1; @ARGV==2 or die; ($tapeid,$tapedesc)= @ARGV; print "Running incremental onto $tapedesc ...\n" or die $!; open T,"$etc/tape.$tapeid" or die "Tape $tapeid not found: $!\n"; close T; open NF,"next-full" or die $!; chomp($next= ); close NF or die $!; setstatus "FAILED during incremental"; open A,"increm-advance" or die $!; chomp($advance= ); close A or die $!; $advance =~ m/^\d+$/ or die "$advance ?"; system "mt -f $ntape rewind"; $? and die $?; 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 $?; } else { system "mt -f $ntape fsf $advance"; $? and die $?; } readfsys('all'); openlog(); sub closepipes () { close(DUMPOR); close(BUFOR); close(DUMPOW); close(BUFOW); } setstatus "PROBLEMS during incremental dump"; for $tf (@fsys) { pipe(DUMPOR,DUMPOW) or die $!; pipe(BUFOR,BUFOW) or die $!; parsefsys(); if ($tm ne 'dump') { print "Not dumping $atf ($prefix) - not \`dump'.\n" or die $!; print LOG "Not dumping $atf ($prefix) - not \`dump'.\n" or die $!; next; } startprocess '&DUMPOW',$rstr."dump 1bfu $softblocksizekb - $atf"; startprocess '<&DUMPOR','>&BUFOW','writebuffer'; startprocess '<&BUFOR','>/dev/null' ,"dd ibs=$softblocksizebytes obs=$blocksizebytes of=$ntape"; closepipes(); endprocesses(); $advance++; } system "mt -f $tape rewind"; $? and die $?; open IAN,">increm-advance.new" or die $!; print IAN "$advance\n" or die $!; close IAN or die $!; rename 'increm-advance.new','increm-advance' or die $!; print LOG "Next FULL dump tape is $next\n" or die $!; print "Next FULL dump tape is $next\n" or die $!; setstatus "INCREMENTAL successful: $tapedesc, next full is $next"; exit 0;