Můžete to udělat.
ls | zip test.zip [email protected]
to se děje z představy, že mám 3 soubory v 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
a samotný soubor, výsledkem je pak
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
Ze stránky Linux Zip Man
Pokud je seznam souborů uveden jako [email protected], zip převezme seznam vstupních souborů ze standardního vstupu.
Můžete použít pojmenovaný kanál a odeslat do něj výstup požadavku při komprimování z něj.
mkfifo output.txt ; mysql [params and query] > output.txt & zip output.zip -FI output.txt ; rm output.txt
Nedokázal jsem si poradit s odpovědí PHP (nedostatek paměti na větších mysql výpisech) a FIFO nefungovalo tak, jak jsem chtěl, takže mým řešením je přejmenovat soubor v archivu ZIP po spuštění výpisu pomocí zipnote (což je součástí balíčku zip v Debianu).
mysql [params and query] | zip -q output.zip -
echo -e "@ -\[email protected]=newname.sql" | zipnote -w output.zip
Příkazový řádek se přepíše, když jsou příkazy příliš dlouhé
Odeslání a příjem souboru v programování soketu v Linuxu s C/C++ (GCC/G++)