在 Debian 系统中,syslog 通常由 rsyslog 或 syslog-ng 负责记录日志。下面按常见场景给你几种备份 syslog 的方法,从简单到规范。
dpkg -l | grep -E 'rsyslog|syslog-ng'
或者:
ps aux | grep syslog
常见情况:
/var/log/syslog → rsyslog/var/log/messages(部分系统)sudo cp /var/log/syslog /backup/syslog_$(date +%F).bak
或打包:
sudo tar czf /backup/syslog_$(date +%F).tar.gz /var/log/syslog
Debian 默认已经用 logrotate 管理日志。
ls /etc/logrotate.d/
syslog 常见配置:
/etc/logrotate.d/rsyslog
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || true
endscript
}
含义:
rotate 7:保留 7 份daily:每天轮转compress:压缩旧日志✅ 所以 syslog 通常已经自动备份成:
/var/log/syslog.1
/var/log/syslog.2.gz
/var/log/syslog.3.gz
sudo nano /etc/logrotate.d/syslog-backup
示例:
/var/log/syslog {
daily
rotate 30
missingok
notifempty
compress
dateext
dateformat -%Y%m%d
create 640 root adm
postrotate
systemctl kill -s HUP rsyslog.service
endscript
}
结果文件名示例:
/var/log/syslog-20260121.gz
sudo crontab -e
添加:
0 2 * * * cp /var/log/syslog /backup/syslog_$(date +\%F)
每天凌晨 2 点备份。
rsync -avz /var/log/syslog user@backup-server:/backup/logs/
*.* @@logserver.example.com:514
Debian 也可能使用 journalctl:
sudo journalctl --disk-usage
备份:
sudo journalctl > /backup/journal_$(date +%F).log
或将 /var/log/journal/ 目录整体拷贝。
| 场景 | 推荐方式 |
|---|---|
| 桌面 / 轻量服务器 | 使用 logrotate |
| 已有自动轮转 | 直接保留 /var/log/syslog.* |
| 强制外部备份 | rsync + cron |
| 生产环境 | logrotate + 远程日志服务器 |
如果你愿意,可以告诉我:
我可以帮你写一份最合适的 backup 方案。