Ubuntu Syslog 日志备份策略
一 策略总览
二 本地轮转与保留
/var/log/syslog {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 640 root adm
postrotate
/usr/lib/rsyslog/rsyslog-daemon reload >/dev/null 2>&1 || true
endscript
}
/var/log/syslog {
size 100M
maxsize 100M
weekly
rotate 4
compress
missingok
notifempty
create 640 root adm
postrotate
/usr/lib/rsyslog/rsyslog-daemon reload >/dev/null 2>&1 || true
endscript
}
sudo logrotate -d /etc/logrotate.d/rsyslog # 调试模式,不真正执行
sudo logrotate -f /etc/logrotate.d/rsyslog # 强制执行一次
cat /var/lib/logrotate/status # 查看最近轮转状态
上述做法覆盖按时间与按大小的常见轮转需求,并给出调试与状态查看方法。
三 异地与远程备份
# 每日 02:00 增量同步,--backup 保留被覆盖的旧版本,--delete 保持目标与源一致
0 2 * * * root rsync -a --backup --delete /var/log/ /mnt/backup/logs/
# 可选:对关键文件做校验(示例对 syslog 做 sha256 并记录)
0 3 * * * root sha256sum /var/log/syslog > /var/log/syslog.sha256 && \
rsync -a /var/log/syslog.sha256 /mnt/backup/logs/
#!/usr/bin/env bash
LOG=/var/log/syslog
DST=/mnt/backup/logs
DATE=$(date +%F)
mkdir -p "$DST"
cp "$LOG" "$DST/syslog-${DATE}.log"
gzip "$DST/syslog-${DATE}.log"
# /etc/rsyslog.d/50-remote.conf
*.* @192.0.2.10:514 # UDP
*.* @@192.0.2.10:514 # TCP
# 防火墙放行
sudo ufw allow 514/tcp
sudo ufw allow 514/udp
sudo systemctl restart rsyslog
以上方案覆盖本地到远程的多种备份路径,并给出可落地的命令与最小配置示例。
四 保留周期与存储规划
五 验证与恢复
sha256sum -c /mnt/backup/logs/syslog-2025-09-01.log.sha256
zcat /mnt/backup/logs/syslog-2025-09-01.log.gz | head
# 示例:恢复单文件
sudo cp /mnt/backup/logs/syslog-2025-09-01.log.gz /var/log/
sudo gunzip /var/log/syslog-2025-09-01.log.gz
sudo systemctl restart rsyslog
# 若需重建当前日志,可先备份再清空
sudo cp /var/log/syslog /var/log/syslog.bak
sudo truncate -s 0 /var/log/syslog
sudo systemctl restart rsyslog