在 Ubuntu 上压缩 Apache 日志,常见做法有 手动压缩、logrotate 自动压缩、定时任务压缩 三种方式。下面按推荐程度说明。
Ubuntu 默认已安装 logrotate,Apache 的日志通常已由它管理。
cat /etc/logrotate.d/apache2
典型内容示例:
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null 2>&1
endscript
}
compress:启用压缩(默认 gzip)delaycompress:延迟一轮再压缩(避免正在写入的日志)weekly / daily:压缩频率rotate N:保留 N 个历史文件logrotate -d /etc/logrotate.d/apache2 # 模拟执行
logrotate -f /etc/logrotate.d/apache2 # 强制执行
cd /var/log/apache2
gzip access.log.1
gzip error.log.1
⚠️ 注意:
access.logsystemctl reload apache2
如果你不想用 logrotate:
crontab -e
添加:
0 3 * * * gzip -f /var/log/apache2/access.log.1
修改 logrotate:
size 100M
daily
表示日志超过 100MB 就轮转并压缩。
ls -lh /var/log/apache2/
你会看到:
access.log
access.log.1.gz
error.log
error.log.1.gz
✅ 直接用 logrotate(系统默认)
❌ 不建议手动 gzip 正在使用的日志
如果你愿意,我可以帮你定制一份适合你服务器流量的 logrotate 配置。