How do you specify filenames within a zip when creating it on the command line from a pipe?
You can do this.
ls | zip test.zip -@
this is done from the notion that i have 3 files in the 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
and the file itself, the result is then
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
From the Linux Zip Man page
If the file list is specified as -@, zip takes the list of input files from standard input.
I couldn't manage with the PHP answer (out of memory on bigger mysql dumps), and the FIFO was not working as I wanted, so my solution is to rename the file inside the ZIP archive after running the dump, using zipnote (which is included with the zip package on Debian).
mysql [params and query] | zip -q output.zip -echo -e "@ -\n@=newname.sql" | zipnote -w output.zip