从标准输入读取数据时压缩文件

150

在Linux中,是否有可能在从标准输入读取数据时对数据进行压缩(创建一个压缩归档文件)?


1
我投票将此问题标记为不适合,因为它属于Unix&Linux。 - Dan Dascalescu
3个回答

220

使用gzip来完成这个任务。最好的方法是读取数据作为输入,然后将压缩后的数据重定向到输出文件,即:

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

cat test.csv 将把数据作为标准输出发送,使用管道符号 gzip 将读取该数据作为标准输入。请确保将 gzip 输出重定向到某个文件,因为压缩的数据不会被写入终端。


5
请注意,test.csv.gz文件在数据流关闭之前保持大小为0。 - MUY Belgium
...那么怎么做呢?这真的是一个单独的问题吗? - russellpierce
13
这个操作也适用于 xzmysqldump mydb | xz > dbdump.sql.xz - jeroen
3
默认压缩级别为 -6,可以使用 -9 - Pablo Bianchi
1
@MUY比利时:不完全是这样,它只在压缩块达到16KB后才开始写入。请参见此处 - Francois

114

是的,gzip可以帮助你实现这一点。如果你只是运行 gzip > foo.gz,它将会把标准输入压缩到文件foo.gz中。你也可以像这样将数据通过管道传递给它:some_command | gzip > foo.gz


1

gzip > stdin.gz 可能是你要的吗?否则,你需要更详细地说明你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接