Puoi farlo.
ls | zip test.zip [email protected]
questo viene fatto partendo dal presupposto che ho 3 file nella dir.
-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
e il file stesso, il risultato è allora
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
Dalla pagina Linux Zip Man
Se l'elenco dei file è specificato come [email protected], zip prende l'elenco dei file di input dallo standard input.
Puoi usare una named pipe e inviargli l'output della richiesta, mentre zippi da essa.
mkfifo output.txt ; mysql [params and query] > output.txt & zip output.zip -FI output.txt ; rm output.txt
Non sono riuscito a gestire la risposta PHP (memoria esaurita su dump mysql più grandi) e il FIFO non funzionava come volevo, quindi la mia soluzione è rinominare il file all'interno dell'archivio ZIP dopo aver eseguito il dump, utilizzando zipnote (che è incluso nel pacchetto zip su Debian).
mysql [params and query] | zip -q output.zip -
echo -e "@ -\[email protected]=newname.sql" | zipnote -w output.zip