在 Linux 系统中,syslog 的备份方式取决于你使用的是 rsyslog、syslog-ng 还是 systemd-journald。下面按常见场景给你一套实用、可落地的备份方法。
ps -ef | grep rsyslog
或
systemctl status rsyslog
journalctl --no-pager | head
/var/log/
常见文件:
/var/log/messages/var/log/syslog/var/log/secure/var/log/croncp -rp /var/log /backup/log_$(date +%F)
tar czvf syslog_backup_$(date +%F).tar.gz /var/log
vi /usr/local/bin/backup_syslog.sh
内容:
#!/bin/bash
BACKUP_DIR="/backup/syslog"
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
tar czvf $BACKUP_DIR/syslog_$DATE.tar.gz /var/log
# 保留最近 30 天
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
chmod +x /usr/local/bin/backup_syslog.sh
crontab -e
每天凌晨 2 点执行:
0 2 * * * /usr/local/bin/backup_syslog.sh
journalctl --list-boots
ls /var/log/journal
tar czvf journal_backup_$(date +%F).tar.gz /var/log/journal
⚠️ 注意
catjournalctl --file=xxx.journal
ls /etc/logrotate.d/
vi /etc/logrotate.d/syslog-backup
/var/log/messages
/var/log/syslog
/var/log/secure
{
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0640 root root
postrotate
/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
rsync -avz /var/log/ backupuser@backup-server:/backup/logs/
*.* @@logserver:514
| 项目 | 建议 |
|---|---|
| 备份频率 | 每天 |
| 保留时间 | 30~90 天 |
| 存储位置 | 本地 + 远程 |
| 是否压缩 | ✅ |
| 是否加密 | 敏感环境建议 GPG |
❌ 直接 cp 正在写入的日志
✅ 使用 tar 或 logrotate
❌ 忘记重启 rsyslog
✅ logrotate 自动 reload
你可以告诉我:
我可以直接给你定制脚本或配置文件。