Thomas Bachem: Zippen auf dem Webserver

Hallo Community,

ich habe letztens gefragt, wie man Dateien auf dem Webserver im ZIP-Format packen kann. Das mache ich dank dem damals Antwortenden also jetzt so:

system("zip archiv.zip datei.dat");

Nun stört mich aber, dass wenn die zu zippende Datei in einem anderen Werzeichnis liegt, die gesamte Ordnerstruktur mit ins Archiv übernommen wird. Beispiel:

system("zip archiv.zip ordner/unterordner/datei.dat");

Wenn Ich die Datei nun herunterlade und entpacke, erstellt Winzip erstmal die 2 Ordner und legt dort die Datei ab.
Wie kann ich das Einbinden der Ordnerstruktur verhindern?

Vielen Dank im Vorraus und bis bald :-)

  • Thomas
  1. Hallo Thomas,

    Wie kann ich das Einbinden der Ordnerstruktur verhindern?

    zip -j archivname datei

    sollte tun, was Du willst (ein Aufruf von zip -h bzw. zip ohne Parameter zeigt übrigens die Hilfe an ;-)

    Viele Grüße,
    Heiko

    1. Hallo Heiko,

      Erstmal danke für die Antwort, aber jetzt habe ich eine wirklich dumme Anfänger-Frage: Wie kommt man in Perl an diesen Kommandozeilen-Interpreter, mit dem man auch die ganzen Hilfen anzeigen lassen können soll? Ich habe ja ZIP nur auch dem Webserver (von Puretec) installiert, und wie man da die Konsole aufruft, weiß ich nicht.
      Ich habe da mal was von Telnet gehört, aber das unterstützt Puretec nicht.

      In Hoffnung auf Non-Total-Blamage ;-)

      • Thomas
      1. Hi Thomas.

        Arbeitest Du mit Windows oder Linux? (ich denke mal ersteres)

        Dann lade dir einfach unter http://www.activestate.com das ganze Paket runter.
        Nach der Installation in der autoexec.bat PATH=Perlpfad setzen (Perlpfad ist natürlich der Pfad, wo Deine Perl.exe liegt).
        ab in die Konsole (MS-Dos-Umgebung) und "perldoc perl" eingeben bzw. "perldoc -f funktion" (funktion z.B. = flock).
        Außerdem gibt es die Hilfen auch noch als HTML-Dateien.

        Telnet brauchst Du dafür nicht.

        fs

        PS:

        Ich habe ja ZIP nur auch dem Webserver (von Puretec) installiert

        Winzip solltest Du aber auch auf deinem Rechner lokal installiert haben, sonst kriegst Du die Dateien ja auch nicht mehr entpackt ;-)

        1. Hi zusammen,

          so kompliziert habe ich gar nicht gar nicht gedacht ;-)

          Ich habe schon seit Zeiten von MS-DOS 2.11 mit PCs zu tun, und so schleppe ich auf allen meinen Kisten immer noch ein "richtiges" Kommandozeilen-Zip (inzwischen zusätzlich auch ein WinZip) mit.

          Das gibt es u.a auf ftp://ftp.freesoftware.com/pub/infozip/WIN32 für die Win32-Plattformen; in der Datei README steht, was die Dateien enthalten, u.a.:

          334067 Apr 18 2000  unz541xN.exe  UnZip 5.41, NT/9x Intel exes, self-extract
          149552 Dec 21 1999  zip23xN.zip   Zip 2.3, NT/9x Intel exes (no encryption)

          Die beiden würde ich downloaden, auf dem Rechner entpacken und mal aus der Kommandozeile (MS-DOS-Fenster) aufrufen - 'ne Dokumentation ist auch dabei.

          Das spart auf jeden Fall den Umweg über die Perl-Installation (obwohl sowas zum Testen von Scripten sicher eine sinnvolle Geschichte ist).

          Übrigens,Thomas: die Frage war absolut nicht dumm. Ich habe daran gemerkt, dass ich mal wieder Dinge als selbstverständlich vorausgesetzt habe, die absolut nicht selbstverständlich sind.

          Viele Grüße,
          Heiko

          (der gerade mal wieder gemerkt hat, wie lange er schon mit Computern zu tun hat)

        2. Hi!

          IMHO war Thomas' Frage nicht, wie man Perl installiert, sondern wie man zip -h remote aufruft, und dafuer braucht man tatsaechlich telnet (oder entsprechendes), d.h. vor allem einen Telnet-Zugang zum Webserver, den er laut seiner Aussage nicht hat.

          Es gibt aber eine Moeglichkeit, das zu umgehen. Folgendes kleines Perl-Script fuehrt aber den Befehl aus und sendet die Ausgabe an den Browser:

          #!/usr/bin/perl
          print "Content-type: text/plain\n\n";
          print qx{zip -h};

          Achtung, IE5 spinnt wahrscheinlich, wenn man das aufruft, also bitte einen Browser verwenden, der HTTP kann.

          Winzip solltest Du aber auch auf deinem Rechner lokal installiert haben, sonst kriegst Du die Dateien ja auch nicht mehr entpackt ;-)

          Es ging um die Kommandozeilenparameter, nicht um das spaetere Entpacken. WinZip unterstuetzt solche Parameter uebrigens nicht (ausser ein paar undokumentierte, mit denen man aber nicht viel anfangen kann).

          So long