Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : TAR-Archive mit Perl erstellen - aber wie?



Eagle
01-08-2002, 19:18
Hallo,

ich das was ich über "tar cvfz irgendwas.tar.gz /verzeichnis" in der Shell erziele, gleichermassen mit Hilfe eines Perl-Scripts erreichen.
Dass Perl 5 hierzu Module wie "Archive::Tar", "Compress::Zlib" und "File::Find" unter www.CPAN.org anbietet ist klar.
Was mir noch so klar ist, ist der Gebrauch des Moduls "File::Find", so daß es den Verzeichnisbaum inclusive der darin enthaltenen Dateien ins in-memory liest.
Ich bin soweit, dass mir

...
$dir = "/usr/www/";
$ext = "html";


find(\&search, $dir);
sub search{
if(/$ext$/i){
$tar->add_files($_);
}
}
...

alle HTML-Dateien aus $dir in ein Tar-Archive komprimiert packt. Nur sucht die Routine immer tiefer - soll sie ja auch - aber sie sollte die Verzeichnisstruktur mit aufzeichnen und nicht Dateien aus einem Unterverzeichnis in eine Ebene mit allen Dateien schmeissen.

Kennt sich damit jemand aus und kann mir das Wie oder Beispielscripte mitteilen?

Also da wäre mir super geholfen! Besten Dank im Voraus!

Andreas

sh_
01-08-2002, 20:03
Hi, eine kleine Aenderung bringt den erwuenschten Erfolg:

Hieraus:


$tar->add_files($_);


machst du einfach:


$tar->add_files($File::Find::name);

Eagle
01-08-2002, 20:17
Alles okay! Vielen Dank, das war, nach was ich suchte!

Andreas

Eagle
01-08-2002, 21:10
Na ja,
ganz okay ist das Resultat noch nicht. Es werden jetzt zwar die Verzeichnisse mitangelegt, aber mit dem Datum 01.01.1970 01:00 und den Rechten 777, während die darin enthaltenen Dateien mit Datum und Rechten den Orignalen entsprechen. Ein weiterer Nebeneffekt ist, dass einige Verzeichnisse beliebig oft mit noch mehr Unterverzeichnissen gebildet werden. Und das verstehe ich ehrlich gesagt momentan nicht, von einer Lösung ganz zu schweigen.

Das Script habe ich zu

find(\&search, $dir);

sub search{
$tar->add_files($File::Find::name);
}

verändert.

Wäre toll, wenn es hierauf ebenfalls so eine brauchbare Antwort gäbe.

Andreas

sh_
01-08-2002, 21:45
Jo, komisch.

Ich hab allerdings in letzter Zeit auch einige komische Sachen mit File::Find bei mir entdeckt.
Vielleicht ist das modul einfach nur alles andere als bugfrei.