温馨提示×

怎样压缩linux旧日志

小樊
47
2026-10-20 00:39:57
栏目: 智能运维

在 Linux 上“压缩旧日志”常见有 手动压缩、脚本+定时任务、以及 使用系统自带日志工具 三种方式。下面按常见场景给你说明。


一、手动压缩旧日志(最简单)

1. 压缩某个日志文件

gzip /var/log/old.log

生成:old.log.gz

2. 压缩某目录下旧日志

gzip /var/log/*.log.2023*

3. 保留原文件(推荐备份用)

gzip -k /var/log/old.log

二、按“时间”自动压缩旧日志(推荐)

示例:压缩 7 天前的日志

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

说明:

  • -mtime +7:修改时间超过 7 天
  • -exec gzip:对找到的文件压缩

✅ 可写入 crontab 每天执行:

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

三、用 tar 打包压缩整个日志目录

适合归档:

tar -czf logs-$(date +%F).tar.gz /var/log/old/

四、使用 logrotate(最专业 ✅)

Linux 日志管理标准工具。

示例配置(/etc/logrotate.d/mylog)

/var/log/myapp/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
}

常用参数:

  • daily / weekly:周期
  • rotate N:保留份数
  • compress:压缩
  • delaycompress:延迟一次压缩
  • size 100M:按大小

测试:

logrotate -d /etc/logrotate.d/myapp

五、Docker / 容器日志(补充)

Docker 日志建议用:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

总结建议

场景 推荐方式
临时处理 gzip
定时清理 find + cron
生产环境 logrotate ✅
归档 tar.gz

如果你能告诉我:

  • 日志路径
  • 是否系统日志(nginx / tomcat / 自定义)
  • 想按“时间”还是“大小”

我可以帮你写一份可直接用的配置或脚本。

0 踩