RECORD_TIME=$(date +%Y-%m-%d)
PID=/var/run/nginx/nginx"> RECORD_TIME=$(date +%Y-%m-%d)
PID=/var/run/nginx/nginx">
117.info
人生若只如初见

如何用nginx日志进行数据备份

使用Nginx日志进行数据备份可以通过以下几种方法实现:

使用Shell脚本和Crontab进行日志切割和备份

  1. 创建备份脚本: 创建一个Shell脚本(例如 cut_nginx_log.sh),内容如下:

    #!/bin/bash
    LOG_PATH="/var/log/nginx"
    RECORD_TIME=$(date +%Y-%m-%d)
    PID=/var/run/nginx/nginx.pid
    mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
    mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
    kill -USR1 `cat $PID`
    tar -zcvPf ${LOG_PATH}/bak/access.${RECORD_TIME}.log.tar.gz ${LOG_PATH}/access.${RECORD_TIME}.log
    tar -zcvPf ${LOG_PATH}/bak/error.${RECORD_TIME}.log.tar.gz ${LOG_PATH}/error.${RECORD_TIME}.log
    rm -f ${LOG_PATH}/access.${RECORD_TIME}.log
    rm -f ${LOG_PATH}/error.${RECORD_TIME}.log
    
  2. 设置脚本权限

    chmod +x cut_nginx_log.sh
    
  3. 配置Crontab: 编辑Crontab文件以定时执行备份脚本:

    crontab -e
    

    添加以下行以每天凌晨执行备份:

    0 0 * * * /path/to/cut_nginx_log.sh
    

使用Logrotate进行日志管理

Logrotate是一个强大的日志管理工具,可以自动进行日志切割、压缩和清理。

  1. 配置Logrotate: 编辑Logrotate配置文件(通常位于 /etc/logrotate.d/nginx/etc/logrotate.d/nginx.conf),内容如下:

    /var/log/nginx/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 0644 root root
        sharedscripts
        postrotate
            kill -USR1 `cat /var/run/nginx/nginx.pid`
        endscript
    }
    
  2. 测试配置: 运行以下命令以测试配置是否正确:

    logrotate -d /etc/logrotate.conf
    
  3. 重启Logrotate服务

    systemctl restart logrotate
    

使用FTP上传备份文件

  1. 创建上传脚本: 创建一个Shell脚本(例如 backup_accesslog_ftp.sh),内容如下:

    #!/bin/sh
    LOG_DIR="/usr/local/nginx/logs/"
    LOG_FILE="access.log"
    FTP_SERVER="ftp.example.com"
    FTP_USER="ftpUser"
    FTP_PASS="ftpPwd"
    DATE=$(date +%Y%m%d)
    LAST_UPLOAD_FILE_SUFFIX=$(date -d '1 hour ago' '%Y%m%d_%H')
    UPLOAD_FILE_SUFFIX=$(date +%Y%m%d_%H)
    REMOTE_DIR="/ftp/backup/nginx/${DATE}"
    
    cp "${LOG_DIR}/${LOG_FILE}" "${LOG_DIR}/${LOG_FILE}_${LAST_UPLOAD_FILE_SUFFIX}.log"
    gzip -c "${LOG_DIR}/${LOG_FILE}_${LAST_UPLOAD_FILE_SUFFIX}.log" > "${LOG_DIR}/${LOG_FILE}_${UPLOAD_FILE_SUFFIX}.log.gz"
    
    ftp -inv ${FTP_SERVER} << EOF
    user ${FTP_USER} ${FTP_PASS}
    binary
    cd ${REMOTE_DIR}
    if [ $? -ne 0 ]; then
        mkdir ${REMOTE_DIR}
    fi
    put ${LOG_DIR}/${LOG_FILE}_${UPLOAD_FILE_SUFFIX}.log.gz
    bye
    EOF
    
    rm -rf "${LOG_DIR}/${LOG_FILE}_${LAST_UPLOAD_FILE_SUFFIX}.log"
    rm -rf "${LOG_DIR}/${LOG_FILE}_${UPLOAD_FILE_SUFFIX}.log.gz"
    
  2. 设置脚本权限

    chmod +x backup_accesslog_ftp.sh
    
  3. 配置Crontab: 编辑Crontab文件以定时执行上传脚本:

    crontab -e
    

    添加以下行以每天凌晨执行备份上传:

    0 0 * * * /path/to/backup_accesslog_ftp.sh
    

通过以上方法,你可以有效地管理和备份Nginx日志,确保数据的完整性和可追溯性。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe4c5AzsKCQVXA1A.html

推荐文章

  • Linux OpenSSL如何管理证书链

    在Linux系统中,使用OpenSSL管理证书链通常涉及以下几个步骤: 生成自签名根证书:
    如果你还没有根证书,你需要创建一个。这通常是组织内部信任的证书颁发机...

  • 怎样用Linux strings命令分析内存转储

    strings 命令是 Linux 系统中一个非常有用的工具,它可以用来从二进制文件、内存转储或其他非文本文件中提取可打印的字符串。这对于分析内存转储文件(例如,cor...

  • Linux如何查看回收站文件列表

    在Linux系统中,通常没有像Windows那样的回收站功能。但是,某些桌面环境(如GNOME、KDE等)提供了类似的功能。以下是在这些桌面环境中查看回收站文件列表的方法...

  • Linux GIMP如何批量处理图片

    在Linux系统下,使用GIMP进行批量处理图片可以通过以下几种方法实现:
    使用GIMP的脚本和插件
    GIMP支持通过脚本和插件进行自动化操作,这对于批量处理图...

  • debian如何更新gcc版本

    在Debian系统中更新GCC(GNU编译器集合)版本,可以按照以下步骤操作:
    方法一:使用APT包管理器 更新APT包列表
    打开终端并运行以下命令来更新APT的包...

  • CentOS下如何安装C++编译器

    在CentOS系统下安装C++编译器,你可以选择安装GCC(GNU Compiler Collection),它包含了C++编译器g++。以下是安装步骤: 打开终端。 首先更新你的系统软件包列表...

  • 如何用Yum安装指定软件源

    使用Yum(Yellowdog Updater, Modified)在CentOS、RHEL等基于RPM的Linux发行版中安装软件包时,通常会从默认的软件源中获取。但有时你可能需要添加或切换到指定...

  • 怎样备份CentOS Overlay配置

    备份CentOS Overlay配置可以通过以下步骤进行:
    方法一:使用rsync备份 登录到服务器:
    使用SSH或其他远程登录工具连接到你的CentOS服务器。 确定配置...