在 Linux 中,syslog 备份通常就是备份 /var/log 下的日志文件,并结合日志轮转(logrotate)来防止日志过大。下面按常见场景给你一个完整说明。
常见路径(不同发行版略有差异):
| 系统 | 主要日志 |
|---|---|
| Debian / Ubuntu | /var/log/syslog |
| RHEL / CentOS | /var/log/messages |
| 通用 | /var/log/auth.log、/var/log/kern.log |
cp /var/log/syslog /backup/syslog-$(date +%F).log
或打包:
tar czf /backup/syslog-$(date +%F).tar.gz /var/log/syslog
⚠️ 注意:直接 cp 可能复制不完整(日志正在写入),更推荐下面方式。
ls /etc/logrotate.d/
常见文件:
rsyslogsyslogcat /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 → 压缩delaycompress → 延迟压缩(避免正在写入)更好的方式是 轮转后再备份
rsync -avz /var/log/syslog* /backup/syslog/
配合 cron:
crontab -e
0 2 * * * rsync -avz /var/log/syslog* /backup/syslog/
#!/bin/bash
BACKUP_DIR="/backup/syslog"
mkdir -p $BACKUP_DIR
tar czf $BACKUP_DIR/syslog-$(date +\%F).tar.gz /var/log/syslog
chmod +x /usr/local/bin/backup_syslog.sh
0 1 * * * /usr/local/bin/backup_syslog.sh
| 场景 | 建议 |
|---|---|
| 单机 | logrotate + 本地备份 |
| 多服务器 | rsyslog → 远程日志服务器 |
| 安全审计 | 日志只读 + 远程备份 |
| 云服务器 | 日志 → 对象存储(S3 / OSS) |
# rsyslog 客户端
*.* @@logserver:514
# 服务端
module(load="imtcp")
input(type="imtcp" port="514")
rm 日志文件(进程仍占用)systemctl restart rsyslog/var/log 留空间✅ 最推荐:
logrotate 自动轮转 + rsync / 定时备份
如果你愿意,可以告诉我:
我可以帮你写一套完整可用的备份方案。