从STDIN读取数据时压缩文件


127

在Linux上从stdin读取时是否可以压缩(创建压缩的存档)数据?


我投票结束这个问题是因为题外,因为它属于Unix&Linux
Dan Dascalescu

Answers:


180

是的,为此使用gzip。最好的方法是读取数据作为输入,并将压缩后的文件重定向到输出文件,即

cat test.csv | gzip > test.csv.gz

cat test.csv将以stdout的形式发送数据,并使用管道符号gzip将以stdin的形式读取数据。确保将gzip输出重定向到某些文件,因为压缩数据不会写入终端。


4
请注意,test.csv.gz文件的大小保持为0,直到关闭数据流量为止。
MUY比利时2013年

...以及如何做到这一点?这真的是一个单独的问题吗?
russellpierce 2015年

9
这也适用于xzmysqldump mydb | xz > dbdump.sql.xz
jeroen

1
可以使用-9,默认压缩级别为-6
Pablo A

110

是的,请gzip允许您这样做。如果仅运行gzip > foo.gz,它将把STDIN压缩到文件foo.gz。您也可以将数据通过管道传输到其中,例如some_command | gzip > foo.gz


1

gzip > stdin.gz也许?否则,您需要充实您的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.