备份 Debian 消息记录的实用方案
一 备份范围与准备
二 方法一 使用 tar 打包压缩
sudo mkdir -p /backup
sudo tar -czvf /backup/logs-$(date +%Y%m%d).tar.gz /var/log
sudo tar -czvf /backup/syslog-$(date +%Y%m%d).tar.gz /var/log/syslog /var/log/messages /var/log/kern.log /var/log/auth.log
三 方法二 使用 rsync 增量同步
sudo mkdir -p /backup/logs
sudo rsync -a --delete /var/log/ /backup/logs/
sudo rsync -avz -e ssh /var/log/ user@remote:/backup/logs/
四 方法三 与 logrotate 联动实现自动轮转与备份
sudo nano /etc/logrotate.d/rsyslog
内容示例:/var/log/syslog
/var/log/messages
{
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 640 root adm
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
/var/log/syslog
/var/log/messages
{
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 640 root adm
postrotate
/usr/bin/rsync -a --remove-source-files /var/log/syslog.* /var/log/messages.* /backup/logs/rotated/
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
sudo logrotate -f /etc/logrotate.d/rsyslog
五 方法四 备份 systemd 日志 journal
# 导出全部
sudo journalctl -a > /backup/journal-$(date +%Y%m%d).log
# 按时间范围导出
sudo journalctl --since "2025-01-01" --until "2025-12-31" -a > /backup/journal-2025.log
# 按服务导出
sudo journalctl -u nginx -a > /backup/journal-nginx-$(date +%Y%m%d).log
sudo journalctl -k -a > /backup/journal-kernel-$(date +%Y%m%d).log
六 自动化 保留策略与校验
sudo crontab -e
添加:0 2 * * * /usr/bin/tar -czvf /backup/logs-$(date +\%Y\%m\%d).tar.gz /var/log
30 2 * * * /usr/bin/find /backup -name "logs-*.tar.gz" -mtime +30 -delete
0 3 * * * /usr/bin/rsync -avz -e ssh /backup/ user@remote:/backup/ && ssh user@remote "find /backup -name 'logs-*.tar.gz' -mtime +7 -delete"