在 Debian 上备份 Golang 应用的日志,通常取决于日志写在哪、用什么方式管理。下面给你几种常见、实用的做法,从简单到规范。
常见位置:
/opt/app/logs//home/user/app/logs//var/log/yourapp/先确认:
ls -lh /path/to/your/logs
适合日志文件在本地目录
tar czf golang_logs_$(date +%F).tar.gz /path/to/logs
find /path/to/logs -name "*.log" -mtime -7 | tar czf logs_week.tar.gz -T -
Debian 自带 logrotate,适合长期自动备份 + 清理
sudo vim /etc/logrotate.d/golang-app
内容:
/path/to/logs/*.log {
daily
missingok
rotate 30
compress
delaycompress
copytruncate
notifempty
}
说明:
daily:每天轮转rotate 30:保留 30 份compress:压缩copytruncate:不重启 Golang 进程测试:
sudo logrotate -d /etc/logrotate.d/golang-app
如果你的 Golang 没写日志文件,只输出 stdout
journalctl -u yourapp.service
journalctl -u yourapp.service > yourapp_$(date +%F).log
journalctl -u yourapp.service --since "7 days ago" > yourapp_week.log
crontab -e
每天凌晨 2 点备份:
0 2 * * * tar czf /backup/golang_logs_$(date +\%F).tar.gz /path/to/logs
rsync -avz /path/to/logs user@backup-server:/backup/golang/
| 场景 | 推荐方式 |
|---|---|
| 单机、简单 | tar + crontab |
| 长期运行 | logrotate |
| systemd 服务 | journalctl |
| 重要日志 | rsync 远程备份 |
如果你愿意,可以告诉我:
我可以给你一套直接可用的配置。