在 Linux 上“压缩旧日志”通常有三层做法:手动压缩、用 logrotate 自动管理、按时间/大小自动清理并压缩。下面按常见场景说明。
gzip /var/log/old.log
生成:old.log.gz
find /var/log -name "*.log" -mtime +7 -exec gzip {} \;
说明:
-mtime +7:修改时间超过 7 天find /var/log -name "*.log" -mtime +30 -exec gzip {} \;
ls /etc/logrotate.d/
cat /etc/logrotate.d/syslog
/var/log/myapp/*.log {
daily
rotate 30
missingok
notifempty
compress
delaycompress
create 0640 app app
sharedscripts
postrotate
systemctl reload myapp >/dev/null 2>&1 || true
endscript
}
参数说明:
daily:每天轮转rotate 30:保留 30 份compress:压缩旧日志delaycompress:延迟压缩(避免正在写入)notifempty:空文件不轮转logrotate -d /etc/logrotate.d/myapp # 模拟
logrotate -f /etc/logrotate.d/myapp # 强制执行
0 3 * * 0 find /var/log -name "*.log" -mtime +7 -exec gzip {} \;
find /var/log -name "*.log" -mtime +7 -exec zstd {} \;
logrotate 也支持:
compresscmd /usr/bin/zstd
copytruncate 或 reload)logrotatedocker log-opt 或 journald如果你能告诉我:
/var/log/nginx)我可以给你一份可直接用的配置。