Debian Syslog备份与恢复方案
一 核心原则与准备
二 备份方案
方案A Logrotate本地轮转与保留(基础必备)
/var/log/syslog {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
sudo logrotate -d /etc/logrotate.conf # 语法检查
sudo logrotate -f /etc/logrotate.d/syslog # 强制执行一次
方案B Tar全量归档备份(适合离线/异地)
sudo tar -czvf /backup/varlog-$(date +%F).tar.gz /var/log
sudo tar -xzvf /backup/varlog-2025-11-23.tar.gz -C /
方案C Rsync增量备份(高效、节省空间)
sudo rsync -a --delete /var/log/ /backup/logs/
sudo rsync -avz -e ssh /var/log/ backup@192.0.2.10:/backup/host1/
方案D 版本化快照备份(rsnapshot)
sudo apt-get install rsnapshot
# 编辑 /etc/rsnapshot.conf,配置 snapshot_root 与 backup 目标
sudo rsnapshot daily
三 恢复方案
场景1 恢复被轮转的旧日志(由logrotate管理)
sudo systemctl stop rsyslog
sudo cp /backup/varlog-2025-11-23.tar.gz -C /tmp
cd /tmp/var/log && sudo cp syslog.1 /var/log/syslog
sudo systemctl start rsyslog
场景2 恢复整套/var/log(tar或rsync)
sudo tar -xzvf /backup/varlog-2025-11-23.tar.gz -C /
sudo rsync -a --delete /backup/logs/ /var/log/
sudo systemctl restart rsyslog
postrotate
/usr/bin/killall -HUP syslog-ng
endscript
场景3 仅恢复单个关键日志(如auth.log)
sudo cp /backup/varlog-2025-11-23/var/log/auth.log /var/log/auth.log
sudo chown root:adm /var/log/auth.log
sudo chmod 640 /var/log/auth.log
sudo systemctl restart rsyslog
四 自动化与运维建议
定时任务示例(crontab)
0 2 * * * /usr/bin/tar -czvf /backup/varlog-$(date +\%F).tar.gz /var/log
0 */6 * * * /usr/bin/rsync -a --delete /var/log/ /backup/logs/
备份校验与演练
远程与多副本
监控与告警
五 常见问题与排错
权限与属主错误:恢复后日志无法写入,检查是否为root:adm且权限640;必要时使用chown/chmod修正。
服务未重新打开日志文件:替换当前日志后未重启或未触发重载,导致日志继续写入旧文件或丢失;使用systemctl restart rsyslog或logrotate的postrotate重载。
配置文件恢复顺序:先恢复**/etc/rsyslog.conf与/etc/rsyslog.d/**,再恢复日志文件,最后重启服务。
磁盘空间不足:先做logrotate压缩与清理,再执行大体积备份;必要时扩容或分流到远程存储。
恢复后时间顺序混乱:按时间排序查看(如ls -ltr /var/log),确认最新日志已就位。