Vous pouvez le faire.
ls | zip test.zip [email protected]
ceci est fait à partir de la notion que j'ai 3 fichiers dans le répertoire.
-rw-rw-r-- 1 xxx domain users 6 Jan 7 11:41 test1.txt
-rw-rw-r-- 1 xxx domain users 6 Jan 7 11:41 test2.txt
-rw-rw-r-- 1 xxx domain users 6 Jan 7 11:41 test3.txt
et le fichier lui-même, le résultat est alors
Archive: test.zip
Length Date Time Name
-------- ---- ---- ----
6 01-07-10 11:41 test1.txt
6 01-07-10 11:41 test2.txt
6 01-07-10 11:41 test3.txt
-------- -------
18 3 files
À partir de la page Linux Zip Man
Si la liste de fichiers est spécifiée comme [email protected],zip prend la liste des fichiers d'entrée de l'entrée standard.
Vous pouvez utiliser un canal nommé et lui envoyer la sortie de la requête tout en le compressant.
mkfifo output.txt ; mysql [params and query] > output.txt & zip output.zip -FI output.txt ; rm output.txt
Je ne pouvais pas gérer avec la réponse PHP (manque de mémoire sur les gros dumps mysql), et le FIFO ne fonctionnait pas comme je le voulais, donc ma solution est de renommer le fichier dans l'archive ZIP après avoir exécuté le dump, en utilisant zipnote (qui est inclus avec le paquet zip sur Debian).
mysql [params and query] | zip -q output.zip -
echo -e "@ -\[email protected]=newname.sql" | zipnote -w output.zip