Komprimieren mit zlib fehlerhaft

Nabend
Ich verzweifle gerade daran, dass die Dateien, die ich versuche zu packen nicht komplett sind....

Zum Problem:
Ich versuche mittels php script ein komplettes Verzeichniss zu packen mittels zlib
Hier die Komandozeile:
exec("tar -zcf $dateipfad $verzeichniss");

Funktioniert soweit ganz gut allerding, wenn ich die Datei entpacken möchte bekomme ich die Fehlermeldung "unerwartetes Archivende" und es fehlen einige Datein, die eigendlich gepackt sein müssten....

max_execution_time hat den wert 50000 müsste also drinn sein, dass mein script das in der Zeit packt...

Habe das ganze auch schon mit bzip2 versucht also dem parameter -j statt -z aber da packt er mir gerade mal ein Unterverzeichniss des verzeichnisses, das eigendlich komplett gepackt werden soll...

Packe ich das ganze garnicht und verwende den tar befehl nur mit den parametern -cf, sind alle Dateien dabei, allerdings soll das nicht der sinn sein, dann kann ich mir die verzeichnisse auch gleich so unkomprimiert runterladen...

Wäre cool, wenn ihr ne Idee habt

MfG Wolf
 
Dann pack doch einfach die Dateien erst mit 'tar' zusammen und rufe die Komprimierung als extra Prozess danach auf.

Code:
exec("tar -cf $zieldatei $quellen");
exec("gzip $zieldatei");

Alternativ versuchst du's einfach mal mit 'system()'.
 
Ich hätte hier noch eine Alternative.
Eine PHP-Klasse die wie folgt aufgerufen werden kann :

Code:
$zip=new zipfile;
$zip->addFile("/files/song1.mp3"),"song1.mp3",time());
$zip->addFile("/files/song2.mp3"),"song2.mp3",time());
$zip->addFile("/files/song3.mp3"),"song3.mp3",time());
echo $zip->file();

Du kannst mehrere Dateien zippen. Den Source der Klasse findest du hier
 
Also das von bitmuncher funktioniert leider nicht :( in der Tar Datei sind alle Dateien drin in der .tar.gz allerdings nicht...

Die php Klasse habe ich noch nicht ausprobiert, weil man dann ja jede einzelne Datei auswählen muss oder sehe ich das falsch?

Danke aber schonmal für die Antworten
 
Dann lass dir doch mal die Fehlermeldungen von 'gzip' auswerfen. Irgendwas scheint ja dabei schiefzulaufen. Um wirklich alle Meldungen zu sehen, solltest du dafür sorgen, dass auch stderr auf stdout ausgegeben wird

Code:
$out = exec("gzip $zieldatei 2>&1");

Soweit ich weiss, sollte das Ausführen via Backticks aber besser sein, wenn man den Output braucht:

Code:
$out = `gzip $zieldatei 2>&1`;
 
bekomme folgenden error:

tar: Removing leading `/' from member names
tar: /****/****/**/*******/******/******/***.tar: Cannot write: Broken pipe
tar: Error is not recoverable: exiting now


Habe jetzt allerdings wieder den "tar -zcf" Befehl verwendet.

Edit:
So hab vergessen die Datei als .tar.gz zu speichern jetzt bekomme ich folgende Meldung:

tar: Removing leading `/' from member names
tar: /****/****/**/*******/******/******/***.tar.gz: Wrote only 8192 of 10240 bytes
tar: Error is not recoverable: exiting now

Hab mal nen bisschen geggogelt und auf diesen wrote only .. of .. bytes Error hab ich eigentlich nur das problem gefunden, dass zu wenig Speicher vorhanden ist. Ist allerdings nicht der Fall, es ist genügend Speicher vorhanden.
 
Zurück
Oben