温馨提示×

怎样备份debian golang日志

小樊
46
2026-09-04 01:57:22
栏目: 编程语言

在 Debian 上备份 Golang 应用的日志,通常取决于日志写在哪、用什么方式管理。下面给你几种常见、实用的做法,从简单到规范。


一、先确认 Golang 日志在哪

常见位置:

  • 应用目录:/opt/app/logs/
  • 用户目录:/home/user/app/logs/
  • systemd 服务日志(没写文件,只输出到 stdout)
  • /var/log/yourapp/

先确认:

ls -lh /path/to/your/logs

二、方式一:直接打包备份(最简单)

适合日志文件在本地目录

1. 手动备份

tar czf golang_logs_$(date +%F).tar.gz /path/to/logs

2. 只备份 N 天内的日志

find /path/to/logs -name "*.log" -mtime -7 | tar czf logs_week.tar.gz -T -

三、方式二:用 logrotate(推荐)

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 用 systemd(journalctl)

如果你的 Golang 没写日志文件,只输出 stdout

查看日志

journalctl -u yourapp.service

备份日志

journalctl -u yourapp.service > yourapp_$(date +%F).log

只备份最近 7 天

journalctl -u yourapp.service --since "7 days ago" > yourapp_week.log

五、方式四:自动定时备份(crontab)

编辑定时任务

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 远程备份

如果你愿意,可以告诉我:

  • Golang 是 systemd / docker / 裸跑
  • 日志是 文件 / stdout
  • 想要 本地 / 远程 / 自动清理

我可以给你一套直接可用的配置

0