Henryk Plötz: Gibts die Möglichkeit das auch als gzip zu seichern?

Beitrag lesen

Moin

JA, BITTE:-)

Ich spar mir an dieser Stelle mal die Einführung in die Ausgabeumleitung bei Shellaufrufen und verweise auf http://aktuell.de.selfhtml.org/artikel/server/linux/index.htm (auch wenn da "Linux" drübersteht ist das meiste wohl auf allen unixoiden Systemen gültig, das hierfür benötigte geht sogar unter Windows)

Nur soviel wie momentan unmittelbar nötig ist:
echo "bla" gibt   bla   auf der Standardausgabe aus.

leitet die Standardausgabe eines Programms in eine Datei um.

| leitet die Standardausgabe des Programms vor dem | (Pipe-Symbol) in die Standardeingabe des Programms hinter den | um.
echo "bla" | gzip > trallala.gz   gibt also bla aus, gzipt es und schreibt es in eine Datei namens trallala.gz.
Preisfrage: Wie sieht der Aufruf aus, wenn du die Standardausgabe von mysqldump gzippen und in eine Datei leiten möchtest? :)

soll das heißen normal ohne Komrimierung, richtig? Da Du Dich damit ja gut auszukennen scheinst, weißt Du bestimmt auch, welchen mime-typ mysqldump erzeugt oder vielleicht kennst Du einen anderen Grund warum sich die frisch erzeugt dump-datei nicht als attachment versenden läßt, siehe http://forum.de.selfhtml.org/?m=28781&t=5121(ich probiere das jetzt ca. 3-4 Stunden!!!)

Einen Mimetyp erzeugt es gar nicht, der kommt erst ins Spiel wenn du die Datei in einer MIME-formatierten Mail verschicken (oder direkt vom Webserver ausliefern lassen) willst. Da mysqldump aber reinen Text erstellt, wird text/plain schon ok sein. Wenn die Datei gezippt wurde, ist der richtige Typ application/x-gzip.

Das ist zu hoch für mich, ich bin froh das ich gerade mit ein paar PHP-Funktionen klar komme, ich versuche das zu verstehen, kommt aber nicht so viel bei rum. Wie sähe das denn praktisch aus und wie komme ich dann an den erzeugten Dateinamen als Variable?

Häh? Du leitest die Ausgabe in eine Datei deiner Wahl um, da wird kein Name erzeugt.

weiter unten verwende ich $dateiname dann für:
$attachment = fread(fopen("www/daten/sicherung/".$dateiname, "r"), filesize($dateiname));

ich würde mal schwer tippen dass der Pfad auch zwischen filesize( und $dateiname gehört. Sonst weiss die Funktion doch gar nicht welche Dateigröße sie eigentlich zurückgeben soll.

$data = "www/daten/sicherung/".$dateiname;
$gzdata = gzencode($data, 9);

Das komprimiert den Datei_namen_, ist vielleicht nicht ganz genau dass was du willst :)

$fp = fopen("/www/daten/sicherung/".$dateiname.".gz", "w");
fwrite($fp, $gzdata);
fclose($fp);

Hint: Bitte bei jedem Dateisystemaufruf eine Fehlerabfrage machen. Es kann sonst sein dass irgendwo vorher was nicht geklappt hat, der Fehler aber erst viel weiter hinten offensichtlich wird. Nach solchen Fehlern könnte man sich stundenlang tot suchen.

--
Henryk Plötz
Grüße aus Berlin