#!/bin/sh
# 备份日志文件目录 LOG_DIR="/usr/local/nginx/logs/" # 日志文件 LOG_FILE="access.log" # FTP 服务器配置 FTP_SERVER="xx.xx.xx.xx" 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') # FTP 上传文件远程目录 REMOTE_DIR="/ftp/backup/nginx/$DATE"
# 备份并压缩日志文件 cp "$LOG_DIR/$LOG_FILE" "$LOG_DIR/access_$UPLOAD_FILE_SUFFIX.log" gzip -c "$LOG_DIR/access_$UPLOAD_FILE_SUFFIX.log" > "$LOG_DIR/access_$UPLOAD_FILE_SUFFIX.log.gz"
# 上传文件 PUTFILE=access_$UPLOAD_FILE_SUFFIX.log.gz
# 检查并创建远程目录 ftp -inv $FTP_SERVER <<EOF user $FTP_USER $FTP_PASS cd $REMOTE_DIR if [ $? -ne 0 ]; then mkdir $REMOTE_DIR fi bye EOF
# 登录FTP服务器并执行命令 ftp -v -n $FTP_SERVER<<EOF user $FTP_USER $FTP_PASS binary cd $REMOTE_DIR lcd $LOG_DIR prompt put $PUTFILE bye EOF echo "commit to ftp successfully"
# 清空原始日志文件 : > "$LOG_DIR/$LOG_FILE" # 删除压缩文件 rm -rf $LOG_DIR/access_$UPLOAD_FILE_SUFFIX.log.gz # 删除上一个小时的日志文件(始终保留最近一个小时的日志文件可查) rm -rf $LOG_DIR/access_$LAST_UPLOAD_FILE_SUFFIX.log
|