Perl: simples Backupscript

grünspam

grünspam

Aktives Mitglied
Thread Starter
Dabei seit
21.02.2004
Beiträge
2.907
Reaktionspunkte
16
Hi Leute,

ich habe mir zur Aufgabe gemacht mal etwas Perl zu lernen. Warum soll jetzt einfach mal offen bleiben ;)

Erstellt wurde ein simples Backupscript an dem ich später rumexperimentieren will. Im Endeffekt gibt der Nutzer Quelle und Ziel ein um dann ein *.tar.gz zu erstellen, das mit Datum benannt im Ziel abgelegt wird.

Ich habe schon viel über "gut lesbaren Code" und "gut strukturiert" gelesen...

Nur hätte ich gerne mal Kritik zu meinen Codefetzen, dem Aufbau, Funktion und was man besser machen könnte.


Code:
#!/usr/bin/perl

#The most simple backup script.

#Start
print "##################\n";
print "# BACKUP RUNNING #\n";
print "##################\n\n";

#DATE
my $mydate = &datum_zeit("D-M-J");

#Target and Source

#Path to source
print "Source: ";
$source = <STDIN> ;
chop ($source) ;

#Path to target
print "\nTarget: ";
$target = <STDIN> ;
chop ($target) ;

#Uncomment for deleting the old Backup first
#print "Deleting old backup\n";
#system ("rm $target/backup*.tar.gz");

#Processing

print "\n\nWriting new backup file\n\n";
print "COMMENTS & WARNINGS:\n\n";

#For a "tell me anything"" output of tar set the -v option
system ("tar -czf $target/backup-$mydate.tar.gz $source");


#END
print "\nWORK DONE!\n";
print "Have a great day!\n\n";


#Subroutine $mydate

sub datum_zeit{

my $p=$_[0];
my %DATUM_ZEIT;
my $timeparameter;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
$Monat+=1;
$Jahrestag+=1;
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
$Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag;
$Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden;
$Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten;
$Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden;
$Jahr+=1900;

$DATUM_ZEIT{'J'}=$Jahr;
$DATUM_ZEIT{'M'}=$Monat;
$DATUM_ZEIT{'D'}=$Monatstag;
$DATUM_ZEIT{'h'}=$Stunden;
$DATUM_ZEIT{'m'}=$Minuten;
$DATUM_ZEIT{'s'}=$Sekunden;
$DATUM_ZEIT{'T'}=$Wochentag;

if ($p){
$p=~s/(J|M|D|h|m|s|T)/$DATUM_ZEIT{$1}/g, while ($p=~/J|M|D|h|m|s|T/);
}
else{
$p=$Jahr.$Monat.$Monatstag.'_'.$Stunden.$Minuten.$ Sekunden;
}
return $p;
}


EDIT Man hat sicherlich schon gemerkt wie basic das alles ist, also geht einfach mal von Anfängerniveau aus ;)
 
Zuletzt bearbeitet:
Zurück
Oben Unten