SI/dumper.pm
changeset 16 fd87c1e3b451
parent 15 4e3753b998a9
child 17 d4942418a9ea
equal deleted inserted replaced
15:4e3753b998a9 16:fd87c1e3b451
     4 use strict;
     4 use strict;
     5 use warnings;
     5 use warnings;
     6 use SI::tools;
     6 use SI::tools;
     7 use File::Basename;
     7 use File::Basename;
     8 
     8 
     9 my @cleanup;
       
    10 END { 
       
    11     #map { eval { run("lvchange -an $_ 2>/dev/null") } } @cleanup;
       
    12     #map { eval { run("lvremove -ff $_ 2>/dev/null") } } @cleanup;
       
    13 }
       
    14 
       
    15 sub dump($\%) {
     9 sub dump($\%) {
    16     my ($file, $devs) = @_;
    10     my ($file, $devs) = @_;
    17 
    11 
    18     foreach my $volume ( map { { name => $_, %{$devs->{volume}{$_}}}}  keys %{$devs->{volume}}) {
    12     foreach my $volume ( map { { name => $_, %{$devs->{volume}{$_}}}}  keys %{$devs->{volume}}) {
    19 	next if !defined $volume->{type} or $volume->{type} !~ /^ext/i;
    13 	next if !defined $volume->{type} or $volume->{type} !~ /^ext/i;
    20 
    14 
       
    15 	system("fsck -f -C0 $volume->{name}");
       
    16 	die "ERR: fsck failed\n" if $? > 2;
       
    17 
    21 	verbose("dumping volume $volume->{name}");
    18 	verbose("dumping volume $volume->{name}");
    22 	my $dumpdev = $volume->{name};
    19 	my $dumpdev = $volume->{name};
    23 
       
    24 #	if ($volume->{origin} =~ /lvm/i) {
       
    25 #	    verbose("(lvm)");
       
    26 #	    my ($vg, $lv) = `lvdisplay -c $volume->{name}` =~ /\s*\/dev\/(.*?)\/(.*?):/;
       
    27 #	    my $snap = "snap$$";
       
    28 #	    push @cleanup, "$vg/$lv";
       
    29 #
       
    30 #	    #eval {
       
    31 #	    #	run("lvcreate -s -L 1G -n snap$$ $vg/$lv 2>/dev/null");
       
    32 #	    #};
       
    33 #	    if ($@) { warn "Can't create snapshot\n" }
       
    34 #	    else { $dumpdev = "/dev/$vg/$snap$$" };
       
    35 #	}
       
    36 
       
    37 	my $of = sprintf $file, basename($volume->{name});
    20 	my $of = sprintf $file, basename($volume->{name});
    38 	run("dump -0 -z -f $of $dumpdev");
    21 	run("dump -0 -z -f $of $dumpdev");
    39 	verbose("\n");
    22 	verbose("\n");
    40     }
    23     }
    41 }
    24 }