centos

CentOS nginx日志备份与恢复方法

小樊
54
2025-10-02 23:00:25
栏目: 智能运维

一、CentOS Nginx日志备份方法

1. 使用logrotate工具(系统自带,自动化推荐)

logrotate是Linux系统自带的日志管理工具,可定期轮转、压缩、删除Nginx日志,配置简单且支持自动化。
配置步骤

2. 编写Shell脚本+crontab(灵活定制)

若需要更灵活的备份策略(如备份到远程服务器、按日期命名),可通过Shell脚本结合crontab实现。
脚本示例/usr/local/bin/nginx_log_backup.sh):

#!/bin/bash
# 定义变量
BACKUP_DIR="/backup/nginx/logs"  # 备份目录
LOG_DIR="/var/log/nginx"         # Nginx日志目录
DATE=$(date +%Y%m%d)             # 当前日期(格式:20250930)
TIMESTAMP=$(date +%Y%m%d%H%M)    # 完整时间戳(格式:202509301200)

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份access.log和error.log(压缩并重命名)
tar -czvf $BACKUP_DIR/access_$DATE.tar.gz $LOG_DIR/access.log
tar -czvf $BACKUP_DIR/error_$DATE.tar.gz $LOG_DIR/error.log

# 删除7天前的备份(保留近7天)
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -exec rm -f {} \;

# 可选:远程同步到备份服务器(需配置SSH免密)
# rsync -avz $BACKUP_DIR/ backupuser@192.168.1.100:/remote/backup/nginx/

设置crontab定时任务

3. 实时日志备份(可选,适合高可用场景)

若需要实时将日志传输到远程服务器(如ELK、S3),可使用Fluentd、Filebeat等日志采集工具。
以Filebeat为例

二、CentOS Nginx日志恢复方法

1. 从备份中恢复(常规方法)

若日志已通过上述方法备份,可直接从备份文件中恢复:

2. 使用lsof恢复误删除日志(紧急情况)

若日志文件被误删除(如rm -f /var/log/nginx/access.log),且Nginx进程仍在运行,可通过lsof工具恢复未释放的文件句柄。
操作步骤

3. 注意事项

0
看了该问题的人还看了