--- a/is Sun Jan 31 23:58:01 2010 +0100
+++ b/is Fri Oct 29 00:23:06 2010 +0200
@@ -45,15 +45,14 @@
do "$src/info/devices";
my %devices = %$VAR1;
- #SI::ptable::restore(%devices);
- #SI::ptable::mkfs(%devices);
- #SI::lvm::pvcreate(%devices);
- #SI::lvm::vgcfgrestore("$src/lvm/vg.*", %devices);
- #SI::lvm::mkfs(%devices);
- #SI::dumper::restore("$src/dump/*", %devices);
+ SI::ptable::restore(%devices);
+ SI::ptable::mkfs(%devices);
+ SI::lvm::pvcreate(%devices);
+ SI::lvm::vgcfgrestore("$src/lvm/vg.*", %devices);
+ SI::lvm::mkfs(%devices);
+ SI::dumper::restore("$src/dump/*", %devices);
SI::grub::restore(%devices);
-
exit;
die Dumper \%devices;
--- a/lib/SI/dumper.pm Sun Jan 31 23:58:01 2010 +0100
+++ b/lib/SI/dumper.pm Fri Oct 29 00:23:06 2010 +0200
@@ -10,6 +10,7 @@
sub dump($\%) {
my ($file, $devs) = @_;
+ my $dumpdates = dirname($file) . "/dumpdates";
foreach my $volume (
map { { name => $_, %{ $devs->{volume}{$_} } } }
@@ -21,7 +22,7 @@
verbose("dumping volume $volume->{name}");
my $dumpdev = $volume->{name};
my $of = sprintf $file, basename($volume->{name});
- run("dump -0 -z -f $of $dumpdev");
+ run("dump -D $dumpdates -u -0 -z -f $of $dumpdev");
verbose("\n");
}
}
@@ -30,7 +31,7 @@
my @dumps = glob(shift);
my $devs = shift;
- my $tmpdir = tempdir (CLEANUP => 1);
+ my $tmpdir = tempdir (CLEANUP => 0);
foreach my $dump (@dumps) {
# suppose it's gzipped
@@ -47,15 +48,20 @@
verbose("restore $dump -> $dev : $fs\n");
run("mount -t $fs $dev $tmpdir");
- my $pid = fork or do {
- open(STDIN, $dump) or die "Can't open $dump as STDIN: $!\n";
- chdir $tmpdir or die "Can't chdir to $tmpdir: $!\n";
- exec restore => "-orf-";
- die "Can't exec restore: $!\n";
+
+ eval {
+ my $pid = fork or do {
+ open(STDIN, $dump) or die "Can't open $dump as STDIN: $!\n";
+ chdir $tmpdir or die "Can't chdir to $tmpdir: $!\n";
+ exec restore => "-orf-";
+ die "Can't exec restore: $!\n";
+ };
+ waitpid($pid, 0);
};
- waitpid($pid, 0);
run("umount $tmpdir");
+ die $@ if $@;
}
+ rmdir($tmpdir);
}
--- a/lib/SI/grub.pm Sun Jan 31 23:58:01 2010 +0100
+++ b/lib/SI/grub.pm Fri Oct 29 00:23:06 2010 +0200
@@ -58,7 +58,8 @@
run("chroot $tmpdir grub-mkdevicemap");
run("chroot $tmpdir /usr/sbin/grub-install '(hd0)'");
- #system("/bin/bash --login");
+ system("/bin/bash --login")
+ if $ENV{_SHELL};
};
if ($@) {
warn "** EVAL: $@\n";
--- a/si Sun Jan 31 23:58:01 2010 +0100
+++ b/si Fri Oct 29 00:23:06 2010 +0200
@@ -45,10 +45,9 @@
$dir =~ s/\/+/\//g;
rmtree($dir);
- mkpath(map { "$dir/$_" } qw(info ptable lvm blkid mbr dump),
- { verbose => 1 });
+ mkpath([map { "$dir/$_" } qw(info ptable lvm blkid mbr dump)]);
- warn grep { -l && readlink =~ /\/.*-$sys_id$/ } glob("$opt_base");
+ #print grep { -l && readlink =~ /\/.*-$sys_id$/ } glob("$opt_base");
SI::ptable::volumes("$dir/ptable/%s", %devices);
die Dumper \%devices if $opt_exit =~ /ptable/;