Rolf: *.pl o.ae. archivieren

Beitrag lesen

Hallo Perler & Co,

weil heute Sonntag ist poste ich mal was direkt aus meiner Bastelkiste... also es ging mir darum, mit einem KLICK Dateien einer bestimmten  Erweiterung (z.B.: "pl") von einem Startverzeichnis aus (z.B.: "c:") in ein Arschief zu sichern... Nuja, wenn es schon PERLSrcipten sind die ich sichern möchte, dann auch mit einem PERLScript "archive.pl". Dieses Script steht ab sofort jedem zur freien Verfügung.

Ihr könnt es benutzen, verbessern, bemeckern (ja bitte her mit Kommentaren!) oder auch kommentarlos in die Mülltonne stecken - wie auch immer: viel Spass damit.

Viele Grüße, Rolf

---schnipp---archive.pl--->

Script archiviert Dateien in eine *.tar

Geschrieben von Rolf Rost am Sonntag, 17. Oktober 1999

#####################################################################

Adminvorgaben

Startdirectory, am Ende keinen Slash, diese DIR wird duchsucht

$dir = "c:";

Sicherungsdirectory, am Ende keinen Slash, diese DIR muss es geben

$sikdir = "d:/pls";

Name des zu erstellenden Archives

$archive = "perlscripte_c";

Dateien der folgenden Erweiterung sollen gesichert werden

$ext = "pl";
#####################################################################

use Archive::Tar;
$tar = Archive::Tar->new();

&dir_sub($dir);     # Funktion scannt das Verzeichnis /sub
&rapport;           # Rapport, was gemacht

$i = 0;             # Zählvariable
sub dir_sub {
    my $dir = shift;
    my $path;
     unless (opendir(DIR, $dir)) {
   closedir(DIR);
   return;
     }
    foreach (readdir(DIR)) {
  next if $_ eq '.' $_ eq '..';
  $path = "$dir/$_";
  if (-d $path) {  # hurra ein Verzeichnis...
      &dir_sub($path);# ... rufe diese Funktion erneut
  }
  elsif (-f _) {     # hurra eine Datei...
      if(/.$ext/i){  # Nur meine Erweiterung
    $tar->add_files($path); # ab ins Archiv
    $i++;       # Zähler erhöhen
   }
  }
    }
    closedir(DIR);
}

$tar->write($sikdir."/".$archive.".tar"); #  Archive schreiben

Ausgabe des Rapports

sub rapport{
print "Es wurden $i Dateien der Erweiterung '$ext' in das folgende Archiv gesichert: '$sikdir/$archive.tar'\n";
}
<---schnapp---<