Ubuntu PHP日志备份方法
一 常用方法概览
二 方法对比与适用场景
| 方法 | 主要作用 | 优点 | 典型场景 |
|---|---|---|---|
| logrotate | 按策略切分、压缩、删除旧日志 | 系统自带、稳定、低开销 | 生产环境长期运行、标准化运维 |
| rsync | 增量同步目录到备份目录/远端 | 快速、节省带宽与空间、可镜像 | 本机到备份盘/NAS/远端服务器 |
| tar 归档 | 打包并压缩为单个归档文件 | 归档清晰、便于传输与离线保存 | 按日/周归档、迁移与审计 |
| Shell + cron | 自定义备份与清理流程 | 灵活可控、可编排复杂逻辑 | 特殊保留策略、需前置处理 |
| Monolog | 应用内结构化日志 | 便于对接 ELK/Graylog 等 | 集中化日志平台与后续备份 |
三 快速上手示例
使用 logrotate 管理 PHP-FPM 日志
/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 www-data adm
postrotate
systemctl reload php-fpm || true
endscript
}
使用 rsync 增量备份到本地备份目录
使用 tar 按日压缩归档
使用 Shell 脚本 + cron 做“复制 + 保留 + 清理”
#!/usr/bin/env bash
set -e
LOG_DIR="/var/log/php"
BACKUP_DIR="/backup/logs"
DATE=$(date +%Y%m%d)
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/php-$DATE.tar.gz" -C "$LOG_DIR" .
find "$BACKUP_DIR" -type f -name "php-*.tar.gz" -mtime +30 -delete
四 实践建议