温馨提示×

怎样压缩linux日志文件

小樊
41
2026-10-08 08:50:33
栏目: 智能运维

在 Linux 下压缩日志文件常见且实用的方法有很多,下面按使用频率和场景给你系统讲一下。


一、常用压缩命令(手动压缩)

1️⃣ gzip(最常用)

gzip access.log

✅ 结果:access.log.gz
❌ 原文件会被删除

解压:

gunzip access.log.gz
# 或
gzip -d access.log.gz

保留原文件压缩:

gzip -k access.log

2️⃣ bzip2(压缩率更高,速度慢)

bzip2 access.log

解压:

bunzip2 access.log.bz2

3️⃣ xz(压缩率最高)

xz access.log

解压:

unxz access.log.xz

4️⃣ tar 打包并压缩(多个日志)

tar -czf logs.tar.gz /var/log/*.log

解压:

tar -xzf logs.tar.gz

二、日志自动压缩(推荐)

✅ 使用 logrotate(生产环境标准方案)

配置文件示例:

/var/log/nginx/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        systemctl reload nginx
    endscript
}

常用参数:

  • daily / weekly:轮换周期
  • rotate N:保留个数
  • compress:自动 gzip
  • size 100M:按大小压缩

手动执行测试:

logrotate -d /etc/logrotate.conf   # 测试
logrotate -f /etc/logrotate.conf  # 强制执行

三、只压缩“旧日志”(不影响正在写入的)

find /var/log -name "*.log" -mtime +7 -exec gzip {} \;

四、压缩前后对比(一般效果)

格式 压缩率 速度
gzip ⭐⭐⭐ ⭐⭐⭐⭐
bzip2 ⭐⭐⭐⭐ ⭐⭐
xz ⭐⭐⭐⭐⭐ ⭐

五、建议做法(最佳实践)

✅ 正在写入的日志:用 logrotate
✅ 历史日志归档:tar + xz
✅ 临时压缩:gzip -k


如果你能告诉我:

  • 日志路径
  • 是否正在被程序写入
  • 服务器类型(Nginx / Java / Docker)

我可以直接给你可用的配置或命令。

0 踩