Mit PEAR::Archive_Tar Tar-Archive behandeln

DruckversionAls E-Mail versendenZum Magazin-Forum

Manchmal möchte man mit Tar-Archiven umgehen, z.B. ein neues Tar-Archiv erzeugen, Dateien aus einem Archiv extrahieren oder Ähnliches. PEAR bietet hier ein Package namens Archive_Tar, mit dem auch gezippte Tar-Archive behandelt werden können.

Installiert wird das Package mit dem Befehl pear install Archive_Tar, sofern es nicht schon bei Ihnen installiert ist. Damit - ein vorhandenes PEAR-Framework vorausgesetzt - ist es nun sehr einfach, ein neues Tar-Archiv zu erzeugen und die enthaltenen Daten auszugeben.

Wie üblich muss das Package erst einmal includiert werden:

include_once "Archive/Tar.php";

Danach erzeugt man ein Objekt, dessen Konstruktor man den Namen der (evtl. bereits vorhandenen Datei) übergibt. Im Beispiel möchte ich ein neues Tar-Archiv erzeugen, gebe also einen Tar-Namen an, der noch nicht existiert. Bitte beachten Sie, dass PHP bzw. der Webserver über die entsprechenden Rechte verfügen muss, im aktuellen (bzw. angegebenen) Verzeichnis schreiben zu dürfen.

$tar = new Archive_Tar("neues.tar");

Dem Konstruktor kann man alternativ noch als zweiten Parameter ein TRUE übergeben, damit erzeugt oder liest er mit GZIP gezippte Tar-Archive.

Das vorläufig noch leere Archiv muß nun erst einmal erzeugt werden, d.h. initial eine oder mehrere Dateien sollen in dieses Archiv eingetütet werden. Die geeignete Methode hierfür ist create, die ein einfaches Array mit einer Liste der Dateinamen übergeben bekommt.

$tar->create(array("ss_logo_120.jpg","rentawizard.gif"));

Nach Aufruf dieser Methode sollten nun im Tar zwei Dateien verfügbar sein.

Nun sollen dem Archiv weitere Dateien hinzugefügt werden. Dies bewerkstelligt man mit der Methode add, die als Parameter ebenfalls eine oder mehrere Dateien per Array übergeben bekommt, die hinzugefügt werden sollen.

$tar->add(array("jpgraph.php"));

Nun kann man auf der Konsole schon einmal überprüfen, ob denn tatsächlich auch diese drei Dateien im Tar-Archiv enthalten sind und ob das übliche Unix-Kommando tar diese erzeugte Datei auch lesen kann:

bjoern@mail:~ > tar tvf test.tar
-rw-r--r-- 500/100        7844 2001-10-25 08:55 ss_logo_120.jpg
-rwxr--r-- 500/100        4617 2003-01-02 20:50 rentawizard.gif
-rw-r--r-- 500/100        2811 2002-12-15 22:21 jpgraph_alpha.jpg

Diese Ausgabe kann man auch über eine Methode des Archive_Tar Packages machen. listContent() liefert ein Array mit den enthaltenen Dateiinfos oder aber 0, wenn keine Dateien enthalten sind. Mit einer kleinen if-Überprüfung und dem Auslesen der Array-Indizes "filename", "size", "mtime" (modified time, Unix Timestamp), und "uid"/"gid" kann man die relevanten Informationen auslesen. Weitere Indizes sind "mode" und "typeflag".

if ( ($file_list = $tar->ListContent()) != 0) {
  /**
  * Dateien sind enthalten
  */
  foreach ($file_list as $v) {
    printf("Name: %s  Size: %d   modtime: %s mode: %s
", $v["filename"],$v["size"],$v["mtime"],$v["mode"]); } }

Archive_Tar kennt noch weitere Methoden, u.a. extract. Ihr übergibt man ein Verzeichnis, in das der Inhalt des Tar- Archivs entpackt werden soll, oder einen leeren String, wenn das Tar-Archiv in das aktuelle Verzeichnis entpackt werden soll. Bitte beachten Sie auch hier, dass PHP resp. der Webserver die entsprechenden Schreibrechte haben muss. Existiert das angegebene Verzeichnis nicht, versucht Archive_Tar es neu zu erzeugen.

$tar->extract("/tmp/Archive/");

Das komplette Script:

<?php
include_once 'Archive/Tar.php';

$tar = new Archive_Tar('./test.tar');

$tar->create(array('ss_logo_120.jpg','rentawizard.gif'));
$tar->add(array('jpgraph_alpha.jpg'));

if ( (
$file_list $tar->ListContent()) != 0) {
  
/**
  * Dateien sind enthalten
  */
  
foreach ($file_list as $v) {
    
printf("Name: %s  Size: %d   modtime: %s mode: %s<br>",
           
$v['filename'],$v['size'],$v['mtime'],$v['mode']);
  }
}

$tar->extract('/tmp/Archive/');
?>

01/2003, Björn Schotte



Björn Schotte ist bekannt durch zahlreiche publizistische Tätigkeiten und seit 2002 Chefredakteur des PHP Magazins. 1999 war er Mitbegründer des PHP-Center, die mittlerweile größte deutschsprachige PHP-Ressource.


Kommentare zu diesem Beitrag 


Mit PEAR::Archive_Tar Tar-Archive behand...  
Fachartikel 21.01.03
Re: Mit PEAR::Archive_Tar Tar-Archive ...  
Frank Stohlburg 29.06.07
Re: Mit PEAR::Archive_Tar Tar-Archiv...  
nabuko 26.04.10

Schreiben Sie einen Kommentar zu diesem Beitrag

Newsletter abonnieren

Verpassen Sie nichts und bleiben Sie informiert mit unserem Newsletter.
Ihre E-Mail Adresse:  
RSS-Feed: Alle News aktuellUnsere News auf Ihrer Website

Weitere Beiträge zu diesem Thema

Excel Export mit PEAR::Spreadsheet_Excel_Writer
In vielen Fällen wünscht sich der Kunde einen Excel Export der mit der PHP Applikation dargestellten Daten. In vielen Fällen erfolgt die Lösung über separierte CSV-Dateien, die zum Download angeboten und von Excel importiert werden können...
Nützliches aus der Trickkiste: Debugging
Im folgenden Beitrag geht es um das Thema Debugging. Vergessen Sie unzählige print- und echo-Orgien, sondern eignen Sie sich den Gebrauch der error_log()-Routine an...
Xdebug Debugger Extension
Debugger wie DBG oder APD dürfte Ihnen bereits bekannt sein. Eine teilweise noch unbekannte Extension verbirgt sich hinter Xdebug, der Debugging Extension von Derick Rethans. Dazu mehr in diesem Magazinbeitrag...
XML-Transformer: XML-Tags auf PHP-Code mappen
Für die Entwickler in Content-Management-Projekten ist das Zusammenspiel von XML mit PHP zunehmend wichtiger. Dieser Beitrag von Herrn Schotte stellt vor, wie XML-Transformationen mit PHP vorgenommen werden können...
Die cracklib und ihre Verwendung in PHP
Eine relativ unbekannte PHP Extension ist ext/crack. Sie ermöglicht die Überprüfung von Strings auf ihre "Passworttauglichkeit" anhand von Wörterbüchern und anderen Regeln. Es wird also zum Beispiel überprüft, ob der String/das Passwort lang genug ist...

Beiträge aus anderen Themenbereichen

VOICE Days plus: Deutschlands Servicewelt im Fokus
Im Interview spricht der Schirmherr der Initiative Prof. Dieter Spath über "Das Konstruktionsbüro für Dienstleistungen" und vieles mehr. Am 12. Oktober eröffnet Prof. Dieter Spath den VOICE Days plus Kongress...
Lösungsmöglichkeiten zum Konflikt der E-Mail-Archivierung mit Fernmeldegeheimnis und Datenschutz
Die Gestattung der privaten Nutzung der betriebseigenen IT-Infrastruktur durch die Mitarbeiter bringt nicht zu unterschätzende rechtliche Komplikationen mit sich – gerade was auch die Archivierung von E-Mails anbelangt...
eCommerce & Datenschutz - Das sollten Sie wissen
Datenschutz spielt auch im eCommerce eine große Rolle. So müssen z.B. für den Betrieb eines Onlineshops die gesetzlichen Vorschriften zum Datenschutz eingehalten werden...

Single Männer
Das Content Management PortalDas Dokumenten Management PortalDas IT-Security PortalDas Customer Relationship Management PortalDas E-Commerce PortalDas Enterprise Resource Planning PortalPortal für VoIP und mobile KommunikationDas Magazin für IT im KrankenhausDas Verzeichnis für IT-Profis
homeimpressumerklärung zum datenschutz - privacy policykontaktwerbung

know how

news

veranstaltungen

Schnellsuche