![]() ![]() |
Mit PEAR::Archive_Tar Tar-Archive behandeln
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.
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.
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.
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".
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.
Das komplette Script: 01/2003, Björn Schotte | ![]() ![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
© 1999-2010 FEiG & PARTNER | Nutzungsbedingungen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
know how news veranstaltungen | ||
![]() | ||
![]() |