2014-01-14 63 views
0

我曾尝试以下,但生成的文件保持在大小为0如何将“tail -f”压缩成压缩(gziped)文件?

tail -f /logs/localhost.log | gzip -c -9 -f > compressed.gz 

localhost.log十分活跃。

谢谢。

+2

gzip做了很多缓冲。在任何输出到达之前,它可能需要超过1000行。也许它不是*那*活跃? – pentadecagon

+0

为什么不'gzip -c -9 -f/log/compressed.gz'? –

回答

0

你不能这样做,因为gzip实用程序不会逐行读取输入,它需要EOF。 但是你可以使用任何具有zlib实现的编程语言编写你的包装器。

+0

我不确定'gzip'是逐行读取的(但它肯定有一些缓冲区),我不确定它在EOF之前不会工作(实际上,在'tar'之后的管道中使用'gzip'时和'tardy'它在EOF之前开始工作)。 –

1

logrotate(8)旨在解决这类问题 - 它旋转并压缩日志文件。

1

你只是没有耐心。这将工作,并将写入gzip文件。积累足够的输入来写第一个压缩块需要一段时间。特别是如果输入是高度可压缩的,例如日志条目彼此非常相似。

尽管gzip文件永远不会被正确终止,但这有一个问题,因为gzip永远不会得到文件结尾。