bug-tar
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-tar] listed-incremental confusion


From: Paul Raines
Subject: [Bug-tar] listed-incremental confusion
Date: Wed, 27 Apr 2005 09:36:15 -0400 (EDT)


I have a RH7.3 linux box with tar-1.13.25

I have backup volume frigg/9 with a history like this:

DATE      TYPE  TAPE:FNUM  SIZE
05-02-27  FULL  AAH747:01  58871MB
05-03-10  INCR  AAH028:01  57345MB
05-03-20  INCR  AAH029:36  18147MB
05-03-30  INCR  AAH031:07  13510MB
05-04-09  INCR  AAH033:07  10962MB
05-04-21  INCR  AAH035:14   8796MB

Each backup was made like this:

  tar cvvlSf - -g /backup/volume/frigg/9/incr.dat --totals -C / \
        local/frigg/9 2> /backup/tape/$TAPE/$FNUM/list | \
        dd of=/dev/nst0 bs=64k >> /backup/tape/$TAPE/$FNUM/log 2>&1
  cp /backup/volume/frigg/9/incr.dat /backup/tape/$TAPE/$FNUM/incr.dat

where any existing /backup/volume/frigg/9/incr.dat was deleted
before the first FULL backup.

Note I have a listing of every file backed up at each run then in
/backup/tape/$TAPE/$FNUM/list.  I have short perl script that can
go through these listings to tell me for a given subdirectory and
date what tapes I need to restore.

===========================================
#!/usr/bin/perl

my $dir = 'local/frigg/9/users/kk/filter/lp20_jas_eq';
foreach my $file (@ARGV) {
  my($tapef) = ($file  =~ m!(AAH\d+:\d+)!);
  open(LIST,"<$file") or die "$!\n";
  while (<LIST>) {
    next unless /^-/; # consider only files
    my($size,$path) = m!(\d+) 200[ 0-9:-]+ $dir/(.*)$!o;
    next unless $path;
    $db{$path} = $tapef;
    $dbsize{$path} = $size;
  }
}

my $tot=0;
my %tapecnt;
foreach my $path (keys %db) {
  $tapecnt{$db{$path}}++;
  $tot += $dbsize{$path};
}
foreach my $tapef (sort keys %tapecnt) {
  print "$tapef: " . $tapecnt{$tapef} . "\n";
}
print "TOTAL: $tot\n";
============================================

The user wants a restore up to the April 9th backup date of her local/frigg/9/users/kk/filter/lp20_jas_eq directory. So I feed into the script above the $TAPE/$FNUM/list files in order up to the 05-04-09 list
and I get:

AAH028/1: 269
AAH029/36: 263
AAH031/7: 5469
AAH033/7: 2158
TOTAL: 24574602397

So I think I should expect about at MAX 8159 files totalling 25GB,
but probably less due to deletions that happened between increments.
Also note the directory needed did not exist at the first FULL backup
so its archive is not needed.

I go to an empty volume and create a restore directory

  mkdir restore; cd restore
  cp /backup/tape/AAH033/7/incr.dat /tmp/incr.dat
  DIR=local/frigg/9/users/kk/filter/lp20_jas_eq

  loadtape AAH028 1
  dd if=/dev/nst0 bs=64k | tar xf - -g /tmp/incr.dat $DIR
  unloadtape AAH028
  loadtape AAH029 36
  dd if=/dev/nst0 bs=64k | tar xf - -g /tmp/incr.dat $DIR
  unloadtape AAH029
  loadtape AAH031 7
  dd if=/dev/nst0 bs=64k | tar xf - -g /tmp/incr.dat $DIR
  unloadtape AAH031
  loadtape AAH033 7
  dd if=/dev/nst0 bs=64k | tar xf - -g /tmp/incr.dat $DIR
  unloadtape AAH033

And I end up with only 756 files extracted.  In another shell
while the above was taking place I had counted the files before
the tape AAH033 extraction and got 756 so on the last tape,
no files at all were extracted even though there were clearly
2158 files that should be extracted!

At this point, I thought maybe listed-incremental works only
if you are extracting the whole archive and breaks if you give
file or directory selectors.  So I did the whole thing above
again, creating a blank new restore volume to extract to, but
this time leaving out DIR.  This time not a single file was
extracted.  Not a one.

Can someone explain how --listed-incremental is "really" supposed
to work and why it does not work in the above case?

--
---------------------------------------------------------------
Paul Raines                   email: address@hidden
MGH/MIT/HMS Athinoula A. Martinos Center for Biomedical Imaging
149 (2301) 13th Street        Charlestown, MA 02129     USA






reply via email to

[Prev in Thread] Current Thread [Next in Thread]