[Cologne-pm] script auf mehreren CPU's starten
Cem Sakaryali
cem.sakaryali at easi.de
Thu Nov 10 02:52:11 PST 2005
Hallo,
ich habe ein perl script, geschrieben um directorys zu
gzippen und taren. Anschliessend werden die tar files
auf eine andere Platte geschoben.
ablauf:
gzip dir1/*
tar dir1.tar dir1/
mv dir1.tar blabla/backup
gzip dir2/*
tar dir2.tar dir2/
mv dir2.tar blabla/backup
gzip dir3/*
tar dir3.tar dir3/
mv dir3.tar blabla/backup
gzip dir4/*
tar dir4.tar dir4/
mv dir4.tar blabla/backup
gzip, tar und mv mache ich mit system ()
Meine Frage ist, da die einzelne Dir's mitteinander nichts
zutun haben wuerde ich sie parallel auf mehreren maschienen starten.
Wie kann ich dies machen?
Danke und Gruss
Cem
Hier mein script.
###################
use strict;
my $DirectoryWhereToPut = '/backup';
# dieser Hash ist fuer zukuenftige sachen gedacht.
# Ist hier eigentlich nicht notwendig
my %hash = (
# directory name directory where to put
a => 'cem/a' ,
b => 'cem/b' ,
c => 'cem/c' ,
d => 'cem/d' ,
);
my ($stund,$min,$sec,$tag,$monat,$jahr)=get_time ();
foreach my $Dir (keys %hash) {
my $TarFileName =
"$Dir"."BACKUP"."_"."$jahr"."_"."$monat"."_"."$tag\.tar";
CompressFile ($Dir,$TarFileName);
MoveFile ($TarFileName,$DirectoryWhereToPut);
}
sub CompressFile {
my ($Dir,$TarFileName) =@_;
# gzip it
system ("gzip -rf $Dir/\*");
print "gzip $Dir done\n";
# tar it
system ("tar cvf $TarFileName $Dir/\*");
print "tar $TarFileName done\n";
return;
}
sub MoveFile {
my ($TarFileName,$DirectoryWhereToPut) =@_;
# move it to DirectoryWhereToPut
system ("mv $TarFileName $DirectoryWhereToPut");
print "move $TarFileName to $DirectoryWhereToPut done\n";
return;
}
sub get_time {
my ($sec,$min,$stund,$tag,$monat,$jahr,$junk,$day_of_year)=localtime();
$tag= sprintf "%2.2d",$tag;
$monat=sprintf "%2.2d",$monat+1;
return ($stund,$min,$sec,$tag,$monat,($jahr+1900));
}
More information about the Cologne-pm
mailing list