#!/usr/bin/env perl
sub debug { 1 }
sub dryrun { 1 }
sub exe {
print "@_\n" if debug;
system("@_"
if not dryrun;
}
my $NEW = "/mnt";
my $ROOTDEV = "/dev/hdb9";
my @EXCL = qw"/lost+found
/tmp
/dev
/sys
/proc
/initrd
/floppy
/cdrom
/mnt";
# Внимание! Порядок имеет значение.
my @MOUNTS = qw"/dev/hdb2 /dev/hdb7 /dev/hdb8 /dev/hdb6";
my %MOUNTS = ();
{
local @_ = @MOUNTS;
%MOUNTS = map { shift @_ => $_ } qw"boot usr home usr/local"
}
my @DIRS = glob "/*";
exe "mkdir -p $NEW";
exe "mount $ROOTDEV $NEW";
for (@DIRS) {
local *debug = sub { 0 };
if (-d) {
exe "mkdir -p $NEW$_";
exe "chown --reference=$_ $NEW$_";
exe "chmod --reference=$_ $NEW$_";
}
}
for (@MOUNTS) {
exe "mount $_ $NEW/$MOUNTS{$_}";
}
@DIRS = grep { "@EXCL" !~ /$_/ } @DIRS;
for (@DIRS) {
# local *debug = sub { 0 };
if (-d) {
exe "cp -dR $_/* $NEW$_";
}
if (-f) {
exe "cp -d $_ $NEW";
}
}
for (@DIRS) {
# local *debug = sub { 0 };
if (-d) {
exe "diff -qr $_ $NEW$_";
}
}
sub debug { 1 }
sub dryrun { 1 }
sub exe {
print "@_\n" if debug;
system("@_"

}
my $NEW = "/mnt";
my $ROOTDEV = "/dev/hdb9";
my @EXCL = qw"/lost+found
/tmp
/dev
/sys
/proc
/initrd
/floppy
/cdrom
/mnt";
# Внимание! Порядок имеет значение.
my @MOUNTS = qw"/dev/hdb2 /dev/hdb7 /dev/hdb8 /dev/hdb6";
my %MOUNTS = ();
{
local @_ = @MOUNTS;
%MOUNTS = map { shift @_ => $_ } qw"boot usr home usr/local"
}
my @DIRS = glob "/*";
exe "mkdir -p $NEW";
exe "mount $ROOTDEV $NEW";
for (@DIRS) {
local *debug = sub { 0 };
if (-d) {
exe "mkdir -p $NEW$_";
exe "chown --reference=$_ $NEW$_";
exe "chmod --reference=$_ $NEW$_";
}
}
for (@MOUNTS) {
exe "mount $_ $NEW/$MOUNTS{$_}";
}
@DIRS = grep { "@EXCL" !~ /$_/ } @DIRS;
for (@DIRS) {
# local *debug = sub { 0 };
if (-d) {
exe "cp -dR $_/* $NEW$_";
}
if (-f) {
exe "cp -d $_ $NEW";
}
}
for (@DIRS) {
# local *debug = sub { 0 };
if (-d) {
exe "diff -qr $_ $NEW$_";
}
}