Ubuntu日志备份策略实操指南
一 策略总览与组件选择
二 本地轮转策略 logrotate
sudo apt update && sudo apt install logrotate/etc/logrotate.conf(全局)与 /etc/logrotate.d/(按服务拆分)/etc/logrotate.d/*weekly
rotate 4
compress
missingok
notifempty
create 0644 root root
include /etc/logrotate.d
/etc/logrotate.d/apache2/var/log/apache2/*.log {
daily
rotate 14
compress
missingok
notifempty
create 0640 root adm
sharedscripts
postrotate
systemctl reload apache2 >/dev/null 2>&1 || true
endscript
}
/etc/logrotate.d/myapp/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
# 若应用不支持USR1,可改为重启或发送信号
kill -USR1 $(cat /var/run/myapp.pid 2>/dev/null) 2>/dev/null || true
endscript
}
sudo logrotate -d /etc/logrotate.confsudo logrotate -f /etc/logrotate.conf/var/lib/logrotate/status(用于记录上次轮转时间,便于排查)三 远程归档与长期冷备
0 2 * * * rsync -avz --delete /var/log/ user@backup.example.com:/backup/hostname/logs/
--delete 让远端与本地保留策略一致;可按需改为增量同步或加带宽/限速参数。/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
# 将当日生成的 .gz 归档上传(示例路径,按实际调整)
find /var/log/myapp/ -name "*.gz" -mtime -1 -exec s3cmd put {} s3://mybucket/logs/ \;
endscript
}
四 验证与运维要点
ls -lh /var/log/ | grep -E '\.(gz|1)$'cat /var/lib/logrotate/statusssh backup.example.com "ls -lh /backup/hostname/logs/"s3cmd ls s3://mybucket/logs/postrotate 中发送 USR1(Nginx/Node.js 常用)或执行 systemctl reload <service>;若不支持,可临时 copytruncate(有丢日志风险,谨慎使用)。create 后的权限/属主与应用匹配,避免写入失败。# 每小时第14分执行
14 * * * * /usr/sbin/logrotate /etc/logrotate-hourly.conf