在 Linux 下压缩 JavaScript(或任意文本)日志备份,常见做法有 命令行手动/脚本压缩、logrotate 自动管理、以及前端/Node 应用内压缩。下面按使用场景给你一套实用方案。
gzip app.2024-01-01.log
# 生成 app.2024-01-01.log.gz
批量压缩某天日志:
gzip access-*.log
xz app.log
# 生成 app.log.xz
zstd app.log
# 生成 app.log.zst
tar -czf logs-$(date +%F).tar.gz /var/log/js-app/*.log
使用 zstd:
tar -cf logs.tar --zstd /var/log/js-app/
/etc/logrotate.d/js-app/var/log/js-app/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
copytruncate
}
说明:
compress:默认用 gzipdelaycompress:避免当天日志被压copytruncate:不重启 Node 进程测试:
logrotate -d /etc/logrotate.d/js-app
zlibconst zlib = require('zlib');
const fs = require('fs');
const input = fs.createReadStream('app.log');
const output = fs.createWriteStream('app.log.gz');
input.pipe(zlib.createGzip()).pipe(output);
| 工具 | 速度 | 压缩率 | 场景 |
|---|---|---|---|
| gzip | 快 | 中 | 通用 |
| xz | 慢 | 高 | 归档 |
| zstd | 很快 | 高 | 推荐 |
xzzstd如果你愿意,可以告诉我:
我可以帮你写 完整备份脚本或 Docker 方案。