一尘不染

拆分gzip日志文件而不将未解压缩的拆分存储在磁盘上

linux

我有一个经常性的任务,将一组大的(大约1-2
GiB)gzip压缩的Apache日志文件分成几部分(比如说50万行的块)。最终文件应再次压缩以限制磁盘使用量。

在Linux上,我通常会这样做:

zcat biglogfile.gz | split -l500000

生成的文件文件将被命名为xaa,xab,xac等,所以我这样做:

gzip x*

这种方法的效果是,作为中间结果,这些 文件被临时存储在磁盘上。有办法避免这种中间磁盘使用情况吗?

我可以(类似于xargs的方式)通过命令(例如gzip)分割输出的管道并即时重新压缩输出吗?还是我看错了方向,是否有更好的方法来做到这一点?

谢谢。


阅读 303

收藏
2020-06-07

共1个答案

一尘不染

您可以按照手册中的split --filter说明使用该选项,例如

zcat biglogfile.gz | split -l500000 --filter='gzip > $FILE.gz'

编辑:不知道何时--filter引入了option,但根据注释,它在中不起作用core utils 8.4

2020-06-07