0%

Linux日志压缩利器

由于现有的日志量越来越多了,原先一直用的gzip进行压缩的,默认的级别,可最近看着是越来越不行,是有必要进行新的选择。

选择的方向是就是zstd

在CentOS中直接

1
sudo yum install zstd -y

就可以安装完成

由于是日志文件,我们单个分割是57MB的大文件

1
2
3
4
5
6
7
8
9
10
11
57M	2020020723.java.access30334_80.log
57M 2020020723.java.access30334_81.log
57M 2020020723.java.access30334_82.log
57M 2020020723.java.access30334_83.log
57M 2020020723.java.access30334_84.log
57M 2020020723.java.access30334_85.log
59M 2020020723.java.access30334_86.log
57M 2020020723.java.access30334_87.log
57M 2020020723.java.access30334_88.log
57M 2020020723.java.access30334_89.log
57M 2020020723.java.access30334_8.log

使用gzip压缩,结果是花了17.9秒,压缩后的大小为原先的1/6左右

1
2
3
4
5
time gzip *.log

real 0m17.930s
user 0m16.806s
sys 0m0.647s
1
2
3
4
5
6
7
8
9
10
11
9.2M	2020020723.java.access30334_80.log.gz
9.2M 2020020723.java.access30334_81.log.gz
9.0M 2020020723.java.access30334_82.log.gz
9.1M 2020020723.java.access30334_83.log.gz
9.1M 2020020723.java.access30334_84.log.gz
9.1M 2020020723.java.access30334_85.log.gz
9.4M 2020020723.java.access30334_86.log.gz
9.2M 2020020723.java.access30334_87.log.gz
9.3M 2020020723.java.access30334_88.log.gz
9.6M 2020020723.java.access30334_89.log.gz
9.0M 2020020723.java.access30334_8.log.gz

使用zstd压缩,使用了2.8秒,压缩后大小是原先的1/10左右

1
2
3
4
5
time zstd -z *.log

real 0m2.847s
user 0m2.784s
sys 0m0.333s
1
2
3
4
5
6
7
8
9
10
11
5.6M	2020020723.java.access30334_80.log.zst
5.7M 2020020723.java.access30334_81.log.zst
5.5M 2020020723.java.access30334_82.log.zst
5.5M 2020020723.java.access30334_83.log.zst
5.6M 2020020723.java.access30334_84.log.zst
5.5M 2020020723.java.access30334_85.log.zst
5.7M 2020020723.java.access30334_86.log.zst
5.6M 2020020723.java.access30334_87.log.zst
5.5M 2020020723.java.access30334_88.log.zst
5.4M 2020020723.java.access30334_89.log.zst
5.6M 2020020723.java.access30334_8.log.zst

当然zstd使用方法要跟默认gzip一样压缩完后删除原文件,那就加上–rm参数就行,或者类似zcat这种就可以直接用zstdcat。具体可以参考help或者下面这篇文章,看这里zstd的压缩比是最优秀的。

参考:
https://blog.gtwang.org/linux/linux-zstd-fast-data-compression-tutorial/

下面这个是简单的比较,单个大小为57MB的11个文件。

zstd gzip
压缩率 1/10 1/6
速度 2.8秒 17.9秒