[Perl] Tar-Archiv überprüfen


chill0r55555

Mitglied
Hallo,

ich habe mir ein Skript geschrieben, dass jeden Unterordner eines bestimmten Ordners in ein gleichnamiges tar.gz File packt. Mit diesem Kommando

Code:
system ("tar cfvz test.tar.gz Ordner");
erstelle ich mein Tar-File. Jetzt stelle ich mir die Frage ob es irgend eine Möglichkeit gibt, zu überprüfen ob die gepackten Archive auch lesbar sind. Wenn sie nicht lesbar sind soll ein Fehler ausgegeben werden.

Man kann ja mit diesem Code
Code:
tar tfz archive.tar.gz
ein Tarfile auflisten. Aber wie kann ich jetzt meinem Perlskript mitteilen ob das Tarfile ok ist oder defekt:confused:

Ich hoffe mir kann einer helfen. Ich verzweifel so langsam.

MfG
 

chill0r55555

Mitglied
Also könnte das ganze zum Beispiel so aussehen?

Code:
$test=system ("tar cfvz test.tar.gz Ordner");
if ($test == 0){
   print "Erfolgreich\n";
}
Aber wie wende ich dieses Tar-Modul an?Kenne mich leider noch nicht so gut in Perl aus und lerne leider immer nur Bruchstücke dazu wie hier zum Beispiel. Wäre echt nett wenn du mir ein Beispiel geben könntest.
 

deepthroat

Erfahrenes Mitglied
Also könnte das ganze zum Beispiel so aussehen?
...
Ja.
Aber wie wende ich dieses Tar-Modul an?Kenne mich leider noch nicht so gut in Perl aus und lerne leider immer nur Bruchstücke dazu wie hier zum Beispiel. Wäre echt nett wenn du mir ein Beispiel geben könntest.
Beispiele sind doch auch auf der Seite vorhanden.

Ein Check ob das Archiv lesbar ist könnte so aussehen:
Perl:
my $tar = Archive::Tar->new( "example.tar.gz", 1 );

if ($tar->list_files()) {
   # ok.
} else {
  print $tar->error();
}
Falls du Perl 5.10.1 hast, könntest du auch eine iter Funktion verwenden.

Gruß
 

chill0r55555

Mitglied
Ich bin da leider nicht so ganz durchgestiegen, aber dank deiner Hilfe weis ich jetzt wie die if aussehen muss. Was denkst du ist praktikabler wenn ich es verwende? Ist wohl das tar Modul oder?
 

deepthroat

Erfahrenes Mitglied
Ich bin da leider nicht so ganz durchgestiegen, aber dank deiner Hilfe weis ich jetzt wie die if aussehen muss. Was denkst du ist praktikabler wenn ich es verwende? Ist wohl das tar Modul oder?
Das kommt auf darauf an, ob du damit leben kannst, das Archive::Tar das Archiv komplett in den Speicher liest (wenn du nicht die iter Funktion verwenden kannst) und im Vergleich zu GNU tar ziemlich langsam ist.

Der Vorteil wiederum ist, das es portabel ist und du nicht darauf angewiesen bist, das ein tar Programm installiert ist, da wo du dein Programm einsetzen willst.

Gruß
 

chill0r55555

Mitglied
Also da wo ich das Skript laufen lasse ist immer das Tar-Rpm istalliert. Dann muss ich wohl selber testen was schneller ist. Ich danke dir vielmals für deine tatkräftige Unterstützung.
 

Neue Beiträge