Ubuntu日志备份方法概览
一 本地轮转归档 logrotate
/var/log/syslog
/var/log/auth.log
/var/log/kern.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload rsyslog >/dev/null 2>&1 || true
endscript
}
sudo logrotate -d /etc/logrotate.d/syslogsudo logrotate -f /etc/logrotate.d/syslogsudo apt-get install logrotate 安装。二 集中式日志备份 rsyslog 服务器
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~
sudo systemctl restart rsyslogsudo ufw allow 514/tcp 与 sudo ufw allow 514/udp*.* @192.0.2.10:514*.* @@192.0.2.10:514$ActionQueueFileName fwdQueue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
ss -tunelp | grep 514 查看监听状态。三 定时打包与同步备份
LOG_DIR="/var/log"
BACKUP_DIR="/backup/logs"
TS=$(date +"%Y%m%d%H%M%S")
tar -czvf "$BACKUP_DIR/logs_$TS.tar.gz" -C "$LOG_DIR" .
# 保留最近7天
find "$BACKUP_DIR" -name "logs_*.tar.gz" -mtime +7 -delete
rsync -aAXv --delete /var/log/ user@backup-host:/backup/ubuntu-logs/
30 23 * * * /usr/local/bin/backup_logs.sh
四 systemd journal 日志的备份
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald
sudo tar -czvf journal_$(date +%F).tar.gz -C /var/log/journal .sudo journalctl --vacuum-time=7d 或 --vacuum-size=1G五 恢复与最佳实践
sudo tar -xzvf logs_20250401.tar.gz -C /var/log/sudo rsync -aAXv /backup/ubuntu-logs/ /var/log/sudo systemctl reload rsyslog